用CMarkup类操纵XML (文章不错)

前端之家收集整理的这篇文章主要介绍了用CMarkup类操纵XML (文章不错)前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
首先到 http://www.firstobject.com/下载CMarkup教学版,解压后里面是一个DEMO,将Markup.h .cpp拷贝并添加到工程中,第一次编译可能会出现预编译错误解决方法在Markup.cpp最前面include "stdafx.h",或者关闭预编译。 @H_301_0@   以下转自 http://www.sqlite.com.cn/MySqlite/12/211.Html @H_301_0@ //----------UserInfo.xml-------------- @H_301_0@ <?xml version="1.0" encoding="UTF-8" ?> @H_301_0@ <UserInfo> @H_301_0@ <UserID>luo</UserID> @H_301_0@ <UserID>lin</UserID> @H_301_0@ </UserInfo>

@H_301_0@ 1。生成UserInfo.xml@H_301_0@ CMarkup xml;

xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>\r\n");@H_301_0@ xml.AddElem("UserInfo");@H_301_0@ xml.IntoElem();@H_301_0@ xml.AddElem("UserID","luo");@H_301_0@ xml.AddElem("UserID","lin");@H_301_0@ xml.OutOfElem();@H_301_0@ xml.Save("UserInfo.xml");

2。浏览特定元素@H_301_0@ //----查看所有UserID----@H_301_0@ CMarkup xml;@H_301_0@ xml.Load("UserInfo.xml");

BOOL bFind = true;@H_301_0@ xml.ResetMainPos();@H_301_0@ while (xml.FindChildElem("UserID");)@H_301_0@ {

//此时接点还是父接点@H_301_0@ CString strTagName = _T("");@H_301_0@ CString strData = _T("");

strTagName = xml.GetChildTagName();@H_301_0@ strData = xml.GetChildData();@H_301_0@ TRACE("\n---tagName:%s,Data:%s--\n",strTagName,strData);

}

/********************这样也可以******************@H_301_0@ CMarkup xml;@H_301_0@ xml.Load("UserInfo.xml");@H_301_0@ BOOL bFind = true;@H_301_0@ xml.ResetMainPos();

while (xml.FindChildElem("UserID");)@H_301_0@ {

xml.IntoElem();@H_301_0@ CString strTagName = _T("");@H_301_0@ CString strData = _T("");@H_301_0@ strTagName = xml.GetTagName();@H_301_0@ strData = xml.GetData();@H_301_0@ TRACE("\n---tagName:%s,strData);@H_301_0@ xml.OutOfElem();

}*/

/**************这样也可以**********************@H_301_0@ CMarkup xml;@H_301_0@ xml.Load("UserInfo.xml");

BOOL bFind = true;@H_301_0@ xml.ResetMainPos();@H_301_0@ xml.FindElem(); //UserInfo@H_301_0@ xml.IntoElem();

while (xml.FindElem("UserID");)@H_301_0@ {

CString strTagName = _T("");@H_301_0@ CString strData = _T("");

strTagName = xml.GetTagName();@H_301_0@ strData = xml.GetData();

TRACE("\n---tagName:%s,strData);

}@H_301_0@ */

//-------------结果----------@H_301_0@ ---tagName:UserID,Data:luo--@H_301_0@ ---tagName:UserID,Data:lin—

3。修改@H_301_0@ //--------把UserID为”luo”改为”flypigluo”-----------@H_301_0@ BOOL bLoadXml = false;@H_301_0@ CMarkup xml;@H_301_0@ bLoadXml = xml.Load("UserInfo.xml");

if (bLoadXml)@H_301_0@ {

CString strUserID = _T("");@H_301_0@ xml.ResetMainPos();@H_301_0@ xml.FindElem();@H_301_0@ xml.IntoElem();

@H_301_0@ while (xml.FindElem("UserID"))@H_301_0@ {

strUserID = xml.GetData();@H_301_0@ if (strUserID=="luo")@H_301_0@ {

xml.SetData(CString("flypig")+strUserID);@H_301_0@ xml.Save("UserInfo.xml");@H_301_0@ break;

}

}

}

4。添加

4。1 添在最后面(使用的是AddElem)@H_301_0@ //加在最后面@H_301_0@ BOOL bLoadXml = false;@H_301_0@ CMarkup xml;@H_301_0@ bLoadXml = xml.Load("UserInfo.xml");

if (bLoadXml)@H_301_0@ {

xml.ResetMainPos();@H_301_0@ xml.FindElem();@H_301_0@ xml.IntoElem();@H_301_0@ xml.AddElem("UserID","luoluo");@H_301_0@ xml.OutOfElem();@H_301_0@ xml.Save("UserInfo.xml");

}

//--------原来为------

<?xml version="1.0" encoding="UTF-8" ?>@H_301_0@ <UserInfo>@H_301_0@ <UserID>luo</UserID>@H_301_0@ <UserID>lin</UserID>@H_301_0@ </UserInfo>

//---------添加后为-------------@H_301_0@ <?xml version="1.0" encoding="UTF-8" ?>@H_301_0@ <UserInfo>@H_301_0@ <UserID>luo</UserID>@H_301_0@ <UserID>lin</UserID>@H_301_0@ <UserID>luoluo</UserID>@H_301_0@ </UserInfo>

4。2 加在最前面(使用InsertElem)@H_301_0@ BOOL bLoadXml = false;@H_301_0@ CMarkup xml;@H_301_0@ bLoadXml = xml.Load("UserInfo.xml");

if (bLoadXml)

{

xml.ResetMainPos();

xml.FindElem();@H_301_0@ xml.IntoElem();@H_301_0@ xml.InsertElem("UserID","AddUserIDHead");@H_301_0@ xml.OutOfElem();@H_301_0@ xml.Save("UserInfo.xml");

}

//----原来为—@H_301_0@ <?xml version="1.0" encoding="UTF-8" ?>@H_301_0@ <UserInfo>@H_301_0@ <UserID>luo</UserID>@H_301_0@ <UserID>lin</UserID>@H_301_0@ </UserInfo>

//------修改后-----@H_301_0@ <?xml version="1.0" encoding="UTF-8" ?>@H_301_0@ <UserInfo>@H_301_0@ <UserID>AddUserIDHead</UserID>@H_301_0@ <UserID>luo</UserID>@H_301_0@ <UserID>lin</UserID>@H_301_0@ </UserInfo>

5。删除@H_301_0@ CMarkup xml;@H_301_0@ xml.Load("UserInfo.xml");@H_301_0@ BOOL bFind = true;@H_301_0@ xml.ResetMainPos();

while (bFind)

{

bFind = xml.FindChildElem("UserID");

if (bFind)@H_301_0@ {//此时接点还是父接点

CString strData = _T("");@H_301_0@ strData = xml.GetChildData();

if (strData=="luo")

{

xml.RemoveChildElem();@H_301_0@ xml.Save("UserInfo.xml");@H_301_0@ break;

}

}

}

6。查找

见第二点浏览。类似

上面的例子里面没有属性这些东西,下面的一个例子是有属性的@H_301_0@ //UserInfo1.xml@H_301_0@ <?xml version="1.0" encoding="UTF-8" ?>@H_301_0@ <UserInfo>@H_301_0@ <User UserID="UserID00" UserPwd="UserPwd00" UserLevel="158" />@H_301_0@ <User UserID="UserID01" UserPwd="UserPwd01" UserLevel="162" />@H_301_0@ <User UserID="UserID02" UserPwd="UserPwd02" UserLevel="165" />@H_301_0@ <User UserID="UserID03" UserPwd="UserPwd03" UserLevel="168" />@H_301_0@ <User UserID="UserID04" UserPwd="UserPwd04" UserLevel="171" />@H_301_0@ <User UserID="UserID05" UserPwd="UserPwd05" UserLevel="175" />@H_301_0@ <User UserID="UserID06" UserPwd="UserPwd06" UserLevel="178" />@H_301_0@ <User UserID="UserID07" UserPwd="UserPwd07" UserLevel="181" />@H_301_0@ <User UserID="UserID08" UserPwd="UserPwd08" UserLevel="184" />@H_301_0@ <User UserID="UserID09" UserPwd="UserPwd09" UserLevel="188" />@H_301_0@ </UserInfo>

7。产生@H_301_0@ CString strID = _T("");@H_301_0@ CString strPwd = _T("");@H_301_0@ CMarkup xml;@H_301_0@ xml.SetDoc("<?xml version=\"1.0\" encoding=\"UTF-8\"?>");@H_301_0@ xml.AddElem("UserInfo");

xml.IntoElem();

for (int i=0; i<10; i++)@H_301_0@ { //产生一个随机数,作为权限

srand(UINT(time(NULL)+i));@H_301_0@ int nLevel = rand()%256;@H_301_0@ strID.Format("UserID%02d",i);@H_301_0@ strPwd.Format("UserPwd%02d",i);@H_301_0@ xml.AddElem("User");@H_301_0@ xml.AddAttrib("UserID",strID);@H_301_0@ xml.AddAttrib("UserPwd",strPwd);@H_301_0@ xml.AddAttrib("UserLevel",nLevel);

}

xml.OutOfElem();@H_301_0@ xml.Save("UserInfo1.xml");

8。查找@H_301_0@ CMarkup xml;@H_301_0@ BOOL bLoad = false;@H_301_0@ BOOL bFind = false;@H_301_0@ bLoad = xml.Load("UserInfo1.xml");

if (bLoad)@H_301_0@ {

CString strID;@H_301_0@ CString strPwd;@H_301_0@ xml.ResetMainPos();@H_301_0@ xml.FindElem(); //UserInfo@H_301_0@ while (xml.FindChildElem("User"))@H_301_0@ {

strID = xml.GetChildAttrib("UserID");@H_301_0@ strPwd = xml.GetChildAttrib("UserPwd");@H_301_0@ TRACE("\n----id:%s,pwd:%s-------\n",strID,strPwd);

if (strID=="UserID00"&&strPwd=="UserPwd00")@H_301_0@ {

bFind = true;@H_301_0@ break;

}

}

}

if (bFind)@H_301_0@ {

TRACE("\n---- find------\n");@H_301_0@ }@H_301_0@ else@H_301_0@ {

TRACE("\n----no find------\n");@H_301_0@ }

9。修改@H_301_0@ CMarkup xml;@H_301_0@ BOOL bLoad = false;@H_301_0@ BOOL bFind = false;@H_301_0@ bLoad = xml.Load("UserInfo1.xml");

if (bLoad)

{

CString strID;@H_301_0@ CString strPwd;

xml.ResetMainPos();@H_301_0@ xml.FindElem(); //UserInfo

while (xml.FindChildElem("User"))

{

strID = xml.GetChildAttrib("UserID");@H_301_0@ strPwd = xml.GetChildAttrib("UserPwd");@H_301_0@ TRACE("\n----id:%s,strPwd);

if (strID=="UserID00"&&strPwd=="UserPwd00")@H_301_0@ {

bFind = true;@H_301_0@ xml.SetChildAttrib("UserID",strID+CString("Modify"));@H_301_0@ xml.Save("UserInfo1.xml");@H_301_0@ break;

}

}

}

if (bFind)@H_301_0@ {

TRACE("\n---- find------\n");@H_301_0@ }@H_301_0@ else@H_301_0@ {

TRACE("\n----no find------\n"); }

猜你在找的XML相关文章