织梦CMS - 轻松建站从此开始!

罗索

VC解析XML--使用CMarkup类解析XML

落鹤生 发布于 2010-08-19 12:24 点击:次 
CMarkup类的源代码。 这是目前的最新版本; 这是官网示例文件,取出里面的Markup.cpp和Markup.h,导入你的工程里面,CMarkup类就可以用了.
TAG:

(一) 先讲一下XML中的物殊字符,手动填写时注意一下。

字符      字符实体

&         &或&

'         '或'

>         >或>

<         &lt;或&#38;&#60;

"         &quot;或&#34;

(二) CMarkup类的源代码。

这是目前的最新版本;这是官网示例文件,取出里面的Markup.cpp和Markup.h,导入你的工程里面,CMarkup类就可以用了;

下载地址:http://www.firstobject.com/Markup112.zip 2009年9月3日官网最新版 如果下载不了,可以到官网去下载 

http://www.firstobject.com/dn_markup.htm 

(三) 创建一个XML文档。

  1. CMarkup xml; 
  2. xml.AddElem( "ORDER" ); 
  3. xml.AddChildElem( "ITEM" ); 
  4. xml.IntoElem(); 
  5. xml.AddChildElem( "SN""132487A-J" ); 
  6. xml.AddChildElem( "NAME""crank casing" ); 
  7. xml.AddChildElem( "QTY""1" ); 
  8. xml.Save("c:\\UserInfo.xml"); 

效果如下:

<ORDER>
<ITEM>
<SN>132487A-J</SN>
<NAME>crank casing</NAME>
<QTY>1</QTY>
</ITEM>
</ORDER>

(四) 浏览特定元素

  1. CMarkup xml; 
  2. xml.Load("UserInfo.xml");while ( xml.FindChildElem("ITEM") ) 
  3.         xml.IntoElem(); 
  4.         xml.FindChildElem( "SN" ); 
  5.         CString csSN = xml.GetChildData(); 
  6.         xml.FindChildElem( "QTY" ); 
  7.     int nQty = atoi( xml.GetChildData() ); 
  8.         xml.OutOfElem(); 

(五)增加元素和属性

  1. //添加在最后面,使用的是AddElem;添加在最前面,使用InsertElem。 
  2. CMarkup xml; 
  3. xml.Load("c:\\UserInfo.xml"); 
  4. xml.AddElem( "ORDER" ); 
  5. xml.IntoElem(); // 进入 ORDER 
  6.         xml.AddElem( "ITEM" ); 
  7.         xml.IntoElem(); // 进入 ITEM 
  8.         xml.AddElem( "SN""4238764-A" ); //添加元素 
  9.         xml.AddElem( "NAME""bearing" );//添加元素 
  10.         xml.AddElem( "QTY""15" );//添加元素 
  11.         xml.OutOfElem(); // 退出 ITEM  
  12. xml.AddElem( "SHIPMENT" ); 
  13. xml.IntoElem(); // 进入 SHIPMENT 
  14. xml.AddElem( "POC" );//添加元素 
  15. xml.SetAttrib( "type""non-emergency");//添加属性 
  16. xml.IntoElem(); // 进入 POC 
  17. xml.AddElem( "NAME""John Smith");//添加元素 
  18. xml.AddElem( "TEL""555-1234");//添加元素 
  19. xml.Save("c:\\UserInfo.xml"); 
  20.  
  21. //效果如下: 
  22.  
  23. <ORDER> 
  24. <ITEM> 
  25. <SN>132487A-J</SN> 
  26. <NAME>crank casing</NAME> 
  27. <QTY>1</QTY> 
  28. </ITEM> 
  29. <ITEM> 
  30. <SN>4238764-A</SN> 
  31. <NAME>bearing</NAME> 
  32. <QTY>15</QTY> 
  33. </ITEM> 
  34. <SHIPMENT> 
  35. <POC type="non-emergency"
  36. <NAME>John Smith</NAME> 
  37. <TEL>555-1234</TEL> 
  38. </POC> 
  39. </SHIPMENT> 
  40. </ORDER> 

(六) 修改元素和属性 

如将POC中的属性type改成:change;
元素TEL改成:123456789

  1. CMarkup xml; 
  2. if (xml.Load("UserInfo.xml")) 
  3.    CString strUserID = _T(""); 
  4.    xml.ResetMainPos(); 
  5.    if (xml.FindChildElem("SHIPMENT")) 
  6.    { 
  7.     xml.IntoElem(); 
  8.     if (xml.FindChildElem("POC")) 
  9.     { 
  10.      xml.IntoElem(); 
  11.      CString str_type=xml.GetAttrib("type"); 
  12.      MessageBox(str_type); 
  13.      xml.SetAttrib("type","change"); 
  14.      strUserID = xml.GetData(); 
  15.      
  16.      if (xml.FindChildElem("TEL")) 
  17.      { 
  18.       xml.IntoElem(); 
  19.       xml.SetData("123456789"); 
  20.       xml.Save("UserInfo.xml"); 
  21.       return
  22.      } 
  23.     } 
  24.    } 

(七)删除元素:

删除SN=132487A-J的项目。

  1. CMarkup xml; 
  2. if (xml.Load("UserInfo.xml")) 
  3.    CString strUserID = _T(""); 
  4.    xml.ResetMainPos(); 
  5.    if (xml.FindChildElem("ITEM")) 
  6.    { 
  7.     xml.IntoElem(); 
  8.     CString str_sn; 
  9.     xml.FindChildElem("SN"); 
  10.     str_sn=xml.GetChildData(); 
  11.     if(str_sn=="132487A-J"
  12.     { 
  13.      xml.RemoveElem(); 
  14.      xml.Save("UserInfo.xml"); 
  15.     } 
  16.    } 
(yxifu)
本站文章除注明转载外,均为本站原创或编译欢迎任何形式的转载,但请务必注明出处,尊重他人劳动,同学习共成长。转载请注明:文章转载自:罗索实验室 [http://www.rosoo.net/a/201008/10000.html]
本文出处:百度博客 作者:yxifu
顶一下
(1)
50%
踩一下
(1)
50%
------分隔线----------------------------
发表评论
请自觉遵守互联网相关的政策法规,严禁发布色情、暴力、反动的言论。
评价:
表情:
用户名: 验证码:点击我更换图片
栏目列表
将本文分享到微信
织梦二维码生成器
推荐内容