DotNet中使用xml相对比较轻松,在vc中操作xml,有些繁琐。最近在网络上得知CMarkup比较好用,于是试了下,还好,就把部分例子写出来。以后有时间的话,再写清楚点。
CMarkup xml; xml.SetDoc("<?xml version=/"1.0/" encoding=/"UTF-8/"?>/r/n"); xml.AddElem("UserInfo"); xml.IntoElem(); xml.AddElem("UserID","luo"); xml.AddElem("UserID","lin"); xml.OutOfElem(); xml.Save("UserInfo.xml");
//----查看所有UserID---- CMarkup xml; xml.Load("UserInfo.xml"); BOOL bFind = true; xml.ResetMainPos(); while (xml.FindChildElem("UserID");) { //此时接点还是父接点 CString strTagName = _T(""); CString strData = _T(""); strTagName = xml.GetChildTagName(); strData = xml.GetChildData(); TRACE("/n---tagName:%s,Data:%s--/n",strTagName,strData); } /********************这样也可以****************** CMarkup xml; xml.Load("UserInfo.xml"); BOOL bFind = true; xml.ResetMainPos(); while (xml.FindChildElem("UserID");) { xml.IntoElem(); CString strTagName = _T(""); CString strData = _T(""); strTagName = xml.GetTagName(); strData = xml.GetData(); TRACE("/n---tagName:%s,Data:%s--/n",strTagName,strData); xml.OutOfElem(); }*/ /**************这样也可以********************** CMarkup xml; xml.Load("UserInfo.xml"); BOOL bFind = true; xml.ResetMainPos(); xml.FindElem(); //UserInfo xml.IntoElem(); while (xml.FindElem("UserID");) { CString strTagName = _T(""); CString strData = _T(""); strTagName = xml.GetTagName(); strData = xml.GetData(); TRACE("/n---tagName:%s,Data:%s--/n",strTagName,strData); } */ //-------------结果---------- ---tagName:UserID,Data:luo-- ---tagName:UserID,Data:lin—
//--------把UserID为”luo”改为”flypigluo”----------- BOOL bLoadXml = false; CMarkup xml; bLoadXml = xml.Load("UserInfo.xml"); if (bLoadXml) { CString strUserID = _T(""); xml.ResetMainPos(); xml.FindElem(); xml.IntoElem(); while (xml.FindElem("UserID")) { strUserID = xml.GetData(); if (strUserID=="luo") { xml.SetData(CString("flypig")+strUserID); xml.Save("UserInfo.xml"); break; } } }
4.1 添在最后面(使用的是AddElem)
//加在最后面 BOOL bLoadXml = false; CMarkup xml; bLoadXml = xml.Load("UserInfo.xml"); if (bLoadXml) { xml.ResetMainPos(); xml.FindElem(); xml.IntoElem(); xml.AddElem("UserID","luoluo"); xml.OutOfElem(); xml.Save("UserInfo.xml"); } //--------原来为------ <?xml version="1.0" encoding="UTF-8" ?> <UserInfo> <UserID>luo</UserID> <UserID>lin</UserID> </UserInfo> //---------添加后为------------- <?xml version="1.0" encoding="UTF-8" ?> <UserInfo> <UserID>luo</UserID> <UserID>lin</UserID> <UserID>luoluo</UserID> </UserInfo>
4.2 加在最前面(使用InsertElem)
BOOL bLoadXml = false; CMarkup xml; bLoadXml = xml.Load("UserInfo.xml"); if (bLoadXml) { xml.ResetMainPos(); xml.FindElem(); xml.IntoElem(); xml.InsertElem("UserID","AddUserIDHead"); xml.OutOfElem(); xml.Save("UserInfo.xml"); } //----原来为— <?xml version="1.0" encoding="UTF-8" ?> <UserInfo> <UserID>luo</UserID> <UserID>lin</UserID> </UserInfo> //------修改后----- <?xml version="1.0" encoding="UTF-8" ?> <UserInfo> <UserID>AddUserIDHead</UserID> <UserID>luo</UserID> <UserID>lin</UserID> </UserInfo>
CMarkup xml; xml.Load("UserInfo.xml"); BOOL bFind = true; xml.ResetMainPos(); while (bFind) { bFind = xml.FindChildElem("UserID"); if (bFind) { //此时接点还是父接点 CString strData = _T(""); strData = xml.GetChildData(); if (strData=="luo") { xml.RemoveChildElem(); xml.Save("UserInfo.xml"); break; } } }
见第二点浏览。类似上面的例子里面没有属性这些东西,下面的一个例子是有属性的
//UserInfo1.xml <?xml version="1.0" encoding="UTF-8" ?> <UserInfo> <User UserID="UserID00" UserPwd="UserPwd00" UserLevel="158" /> <User UserID="UserID01" UserPwd="UserPwd01" UserLevel="162" /> <User UserID="UserID02" UserPwd="UserPwd02" UserLevel="165" /> <User UserID="UserID03" UserPwd="UserPwd03" UserLevel="168" /> <User UserID="UserID04" UserPwd="UserPwd04" UserLevel="171" /> <User UserID="UserID05" UserPwd="UserPwd05" UserLevel="175" /> <User UserID="UserID06" UserPwd="UserPwd06" UserLevel="178" /> <User UserID="UserID07" UserPwd="UserPwd07" UserLevel="181" /> <User UserID="UserID08" UserPwd="UserPwd08" UserLevel="184" /> <User UserID="UserID09" UserPwd="UserPwd09" UserLevel="188" /> </UserInfo>
CString strID = _T(""); CString strPwd = _T(""); CMarkup xml; xml.SetDoc("<?xml version=/"1.0/" encoding=/"UTF-8/"?>"); xml.AddElem("UserInfo"); xml.IntoElem(); for (int i=0; i<10; i++) { //产生一个随机数,作为权限 srand(UINT(time(NULL)+i)); int nLevel = rand()%256; strID.Format("UserID%02d",i); strPwd.Format("UserPwd%02d",i); xml.AddElem("User"); xml.AddAttrib("UserID",strID); xml.AddAttrib("UserPwd",strPwd); xml.AddAttrib("UserLevel",nLevel); } xml.OutOfElem(); xml.Save("UserInfo1.xml");
CMarkup xml; BOOL bLoad = false; BOOL bFind = false; bLoad = xml.Load("UserInfo1.xml"); if (bLoad) { CString strID; CString strPwd; xml.ResetMainPos(); xml.FindElem(); //UserInfo while (xml.FindChildElem("User")) { strID = xml.GetChildAttrib("UserID"); strPwd = xml.GetChildAttrib("UserPwd"); TRACE("/n----id:%s,pwd:%s-------/n",strID,strPwd); if (strID=="UserID00"&&strPwd=="UserPwd00") { bFind = true; break; } } } if (bFind) { TRACE("/n---- find------/n"); } else { TRACE("/n----no find------/n"); }
CMarkup xml; BOOL bLoad = false; BOOL bFind = false; bLoad = xml.Load("UserInfo1.xml"); if (bLoad) { CString strID; CString strPwd; xml.ResetMainPos(); xml.FindElem(); //UserInfo while (xml.FindChildElem("User")) { strID = xml.GetChildAttrib("UserID"); strPwd = xml.GetChildAttrib("UserPwd"); TRACE("/n----id:%s,pwd:%s-------/n",strID,strPwd); if (strID=="UserID00"&&strPwd=="UserPwd00") { bFind = true; xml.SetChildAttrib("UserID",strID+CString("Modify")); xml.Save("UserInfo1.xml"); break; } } } if (bFind) { TRACE("/n---- find------/n"); } else { TRACE("/n----no find------/n"); }
相关文件的下载请到置顶的资源首页。