当前位置: 编程技术>c/c++/嵌入式
VC解析XML文件-CMarkup的使用详解
来源: 互联网 发布时间:2014-10-14
本文导语: VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等。据说tinyXML很好,可能字符集问题,我编译不了。所以就用CMarkup来解析,使用过后,觉得非常不错,使用起来很方便。CMarkup下载地址:http://www.firstobject.com/发...
VC解析XML文件的工具有很多,CMarkup, tinyXML,还有IBM的,MS的等等。
据说tinyXML很好,可能字符集问题,我编译不了。
所以就用CMarkup来解析,使用过后,觉得非常不错,使用起来很方便。
CMarkup下载地址:http://www.firstobject.com/
发现网上有方法很法,我就摘下来了
//----------UserInfo.xml--------------
xml version="1.0" encoding="UTF-8" ?>
luo
lin
//----------UserInfo.xml--------------
xml version="1.0" encoding="UTF-8" ?>
luo
lin
一、生成UserInfo.xml
CMarkup xml;
xml.SetDoc("xml version="1.0" encoding="UTF-8"?>rn");
xml.AddElem("UserInfo");
xml.IntoElem();
xml.AddElem("UserID","luo");
xml.AddElem("UserID","lin");
xml.OutOfElem();
xml.Save("UserInfo.xml");
CMarkup xml;
xml.SetDoc("xml version="1.0" encoding="UTF-8"?>rn");
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----
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;
}
}
}
//--------把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;
}
}
}
四、添加
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" ?>
luo
lin
//---------添加后为-------------
xml version="1.0" encoding="UTF-8" ?>
luo
lin
luoluo
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" ?>
luo
lin
//------修改后-----
xml version="1.0" encoding="UTF-8" ?>
AddUserIDHead
luo
lin
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" ?>
luo
lin
//------修改后-----
xml version="1.0" encoding="UTF-8" ?>
AddUserIDHead
luo
lin
五、删除
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;
}
}
}
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" ?>
//UserInfo1.xml
xml version="1.0" encoding="UTF-8" ?>
七、产生
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
解析取模运算% 和位与运算& 之间的关系详解
解析Linux系统中JVM内存2GB上限的详解
ThinkPHP3.1新特性之内容解析输出详解
解析c++中的默认operator=操作的详解
解析C#彩色图像灰度化算法的实现代码详解
解析C#中@符号的几种使用方法详解
解析后台进程对Android性能影响的详解
解析Android开发优化之:对界面UI的优化详解(三)
解析在内部循环中Continue外部循环的使用详解
解析使用enumerator模式简化异步操作的详解
jQuery解析JSON数据实例详解
解析Android开发优化之:对界面UI的优化详解(二)
解析JAVA深度克隆与浅度克隆的区别详解
解析jdbc处理oracle的clob字段的详解
解析C#中的装箱与拆箱的详解
解析C#中委托的同步调用与异步调用(实例详解)
解析Runtime中shutdown hook的使用详解
DHCP:解析开发板上动态获取ip的2种实现方法详解
java Class文件内部结构解析过程详解
据说tinyXML很好,可能字符集问题,我编译不了。
所以就用CMarkup来解析,使用过后,觉得非常不错,使用起来很方便。
CMarkup下载地址:http://www.firstobject.com/
发现网上有方法很法,我就摘下来了
代码如下:
//----------UserInfo.xml--------------
xml version="1.0" encoding="UTF-8" ?>
luo
lin
//----------UserInfo.xml--------------
xml version="1.0" encoding="UTF-8" ?>
luo
lin
一、生成UserInfo.xml
代码如下:
CMarkup xml;
xml.SetDoc("xml version="1.0" encoding="UTF-8"?>rn");
xml.AddElem("UserInfo");
xml.IntoElem();
xml.AddElem("UserID","luo");
xml.AddElem("UserID","lin");
xml.OutOfElem();
xml.Save("UserInfo.xml");
CMarkup xml;
xml.SetDoc("xml version="1.0" encoding="UTF-8"?>rn");
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----
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;
}
}
}
//--------把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;
}
}
}
四、添加
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" ?>
luo
lin
//---------添加后为-------------
xml version="1.0" encoding="UTF-8" ?>
luo
lin
luoluo
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" ?>
luo
lin
//------修改后-----
xml version="1.0" encoding="UTF-8" ?>
AddUserIDHead
luo
lin
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" ?>
luo
lin
//------修改后-----
xml version="1.0" encoding="UTF-8" ?>
AddUserIDHead
luo
lin
五、删除
代码如下:
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;
}
}
}
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" ?>
//UserInfo1.xml
xml version="1.0" encoding="UTF-8" ?>
七、产生
代码如下:
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