使用CMarkup类解析XML
发布时间:2020-12-16 09:05:59 所属栏目:百科 来源:网络整理
导读:文章来源 http://www.firstobject.com/dn_markup.htm ( 一) XML中的物殊字符 字符 字符实体 amp;或#38;#38; ' apos;或#39; gt;或#62; lt;或#38;#60; " quot;或#34; ( 二)CMarkup 类的源代码 这是目前的最新版本; 这是官网示例文件,取出里面的Markup.cpp和M
文章来源http://www.firstobject.com/dn_markup.htm (一)XML中的物殊字符 字符 字符实体 (二)CMarkup类的源代码
这是目前的最新版本;
这是官网示例文件,取出里面的Markup.cpp和Markup.h,导入你的工程里面,CMarkup类就可以用了;
下载地址:http://www.firstobject.com/Markup90.zip
(三)创建一个XML文档
CMarkup xml; xml.AddElem( "ORDER" ); xml.AddChildElem( "ITEM" ); xml.IntoElem(); xml.AddChildElem( "SN","132487A-J" ); xml.AddChildElem( "NAME","crank casing" ); xml.AddChildElem( "QTY","1" ); xml.Save("c://UserInfo.xml"); 效果如下: <span style="font-size:14px;"><ORDER> <ITEM> <SN>132487A-J</SN> <NAME>crank casing</NAME> <QTY>1</QTY> </ITEM> </ORDER></span> (四)浏览特定元素
<span style="font-size:14px;">CMarkup xml; xml.Load("UserInfo.xml"); ( xml.FindChildElem("ITEM") ) { xml.IntoElem(); xml.FindChildElem( "SN" ); CString csSN = xml.GetChildData(); xml.FindChildElem( "QTY" ); int nQty = atoi( xml.GetChildData() ); xml.OutOfElem(); }</span> (五)增加元素和属性
添加在最后面,使用的是AddElem;添加在最前面,使用InsertElem。
<span style="font-size:14px;">CMarkup xml; xml.Load("c://UserInfo.xml"); xml.AddElem( "ORDER" ); xml.IntoElem(); // 进入 ORDER xml.AddElem( "ITEM" ); xml.IntoElem(); // 进入 ITEM xml.AddElem( "SN","4238764-A" ); //添加元素 xml.AddElem( "NAME","bearing" );//添加元素 xml.AddElem( "QTY","15" );//添加元素 xml.OutOfElem(); // 退出 ITEM xml.AddElem( "SHIPMENT" ); xml.IntoElem(); // 进入 SHIPMENT xml.AddElem( "POC" );//添加元素 xml.SetAttrib( "type","non-emergency");//添加属性 xml.IntoElem(); // 进入 POC xml.AddElem( "NAME","John Smith");//添加元素 xml.AddElem( "TEL","555-1234");//添加元素 xml.Save("c://UserInfo.xml"); </span> 效果如下: <span style="font-size:14px;"><ORDER> <ITEM> <SN>132487A-J</SN> <NAME>crank casing</NAME> <QTY>1</QTY> </ITEM> <ITEM> <SN>4238764-A</SN> <NAME>bearing</NAME> <QTY>15</QTY> </ITEM> <SHIPMENT> <POC type="non-emergency"> <NAME>John Smith</NAME> <TEL>555-1234</TEL> </POC> </SHIPMENT> </ORDER></span> (六)修改元素和属性 如将POC中的属性type改成:change; 元素TEL改成:123456789
CMarkup xml; if (xml.Load("UserInfo.xml")) { CString strUserID = _T(""); xml.ResetMainPos(); if (xml.FindChildElem("SHIPMENT")) { xml.IntoElem(); if (xml.FindChildElem("POC")) { xml.IntoElem(); CString str_type=xml.GetAttrib("type"); MessageBox(str_type); xml.SetAttrib("type","change"); strUserID = xml.GetData(); if (xml.FindChildElem("TEL")) { xml.IntoElem(); xml.SetData("123456789"); xml.Save("UserInfo.xml"); return; } } } } (七)删除元素 删除SN=132487A-J的项目。
CMarkup xml; if (xml.Load("UserInfo.xml")) { CString strUserID = _T(""); xml.ResetMainPos(); if (xml.FindChildElem("ITEM")) { xml.IntoElem(); CString str_sn; xml.FindChildElem("SN"); str_sn=xml.GetChildData(); if(str_sn=="132487A-J") { xml.RemoveElem(); xml.Save("UserInfo.xml"); } } } (八)补充说明 1、xml.ResetMainPos()的使用 该函数是使得xml的指针重新指向文件的起点,当执行完如下语句后, <span style="font-size:14px;">while ( xml.FindChildElem("ITEM") ) { xml.IntoElem(); xml.FindChildElem( "SN" ); CString csSN = xml.GetChildData(); xml.OutOfElem(); //执行完该语句后返回外围元素 }</span>
xml的指针是指向“SN”的结尾位置,如果想重新从该xml文件的开始位置查找整个文件,注意要使用以上函数。
2、创建文档的xml版本号和编码类型
xml.SetDoc("<?xml version=/"1.0/" encoding=/"GB2312/"?>/r/n"); (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |