(一) 先讲一下XML中的物殊字符,手动填写时注意一下。
字符 字符实体
& &或&
' '或'
> >或>
< <或&<
" "或"
(二) CMarkup类的源代码。
这是目前的最新版本;这是官网示例文件,取出里面的Markup.cpp和Markup.h,导入你的工程里面,CMarkup类就可以用了;
下载地址:http://www.firstobject.com/Markup112.zip 2009年9月3日官网最新版 如果下载不了,可以到官网去下载
http://www.firstobject.com/dn_markup.htm
(三) 创建一个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");
效果如下:
<ORDER>
<ITEM>
<SN>132487A-J</SN>
<NAME>crank casing</NAME>
<QTY>1</QTY>
</ITEM>
</ORDER>
(四) 浏览特定元素
- CMarkup xml;
- xml.Load("UserInfo.xml");while ( xml.FindChildElem("ITEM") )
- {
- xml.IntoElem();
- xml.FindChildElem( "SN" );
- CString csSN = xml.GetChildData();
- xml.FindChildElem( "QTY" );
- int nQty = atoi( xml.GetChildData() );
- xml.OutOfElem();
- }
(五)增加元素和属性
-
- CMarkup xml;
- xml.Load("c:\\UserInfo.xml");
- xml.AddElem( "ORDER" );
- xml.IntoElem();
- xml.AddElem( "ITEM" );
- xml.IntoElem();
- xml.AddElem( "SN", "4238764-A" );
- xml.AddElem( "NAME", "bearing" );
- xml.AddElem( "QTY", "15" );
- xml.OutOfElem();
- xml.AddElem( "SHIPMENT" );
- xml.IntoElem();
- xml.AddElem( "POC" );
- xml.SetAttrib( "type", "non-emergency");
- xml.IntoElem();
- xml.AddElem( "NAME", "John Smith");
- xml.AddElem( "TEL", "555-1234");
- xml.Save("c:\\UserInfo.xml");
-
-
-
- <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>
(六) 修改元素和属性
如将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");
- }
- }
- }
(yxifu) |