﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-My C++ Blog-随笔分类-XML初识</title><link>http://www.cppblog.com/ipuerta/category/8758.html</link><description /><language>zh-cn</language><lastBuildDate>Fri, 07 Nov 2008 21:25:01 GMT</lastBuildDate><pubDate>Fri, 07 Nov 2008 21:25:01 GMT</pubDate><ttl>60</ttl><item><title>通过写xml配置文件方式实现多语言</title><link>http://www.cppblog.com/ipuerta/archive/2008/11/08/66295.html</link><dc:creator>IP</dc:creator><author>IP</author><pubDate>Fri, 07 Nov 2008 18:06:00 GMT</pubDate><guid>http://www.cppblog.com/ipuerta/archive/2008/11/08/66295.html</guid><wfw:comment>http://www.cppblog.com/ipuerta/comments/66295.html</wfw:comment><comments>http://www.cppblog.com/ipuerta/archive/2008/11/08/66295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ipuerta/comments/commentRss/66295.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ipuerta/services/trackbacks/66295.html</trackback:ping><description><![CDATA[通过写xml配置文件方式实现多语言<br>--------------------------------------------------------------------------------<br>那就把字符串资源放在xml文件中，载入字符串的时候从xml读取<br>--------------------------------------------------------------------------------<br>读取xml文件<br>--------------------------------------------------------------------------------<br>能给个例子么，你们说的我知道<br>--------------------------------------------------------------------------------<br>读写XML文件可用MSXML4<br>//引入<br>#import "C:\WINNT.0\system32\msxml4.dll"<br>//DOM的DOC对象定义<br>MSXML2::IXMLDOMDocumentPtr&nbsp;&nbsp; pXMLDoc;<br>//解析<br>void CMainFrame::OnParsexmldoc() <br>{<br>//加载文件<br>pXMLDoc-&gt;load("c:\\XML\\test.xml");<br>//在树中查找名为City的节点,"//"表示在任意一层查找<br>MSXML2::IXMLDOMElementPtr&nbsp; childNode ;<br>childNode = (MSXML2::IXMLDOMElementPtr)(pXMLDoc-&gt;selectSingleNode("//AUTHOR"));<br>//得到节点类型<br>MSXML2::DOMNodeType nodeType;<br>childNode-&gt;get_nodeType(&amp;nodeType);<br>//节点名称<br>BSTR var;<br>CString name;<br>childNode-&gt;get_nodeName(&amp;var);<br>name = (char*)(_bstr_t)var;<br>//节点值<br>VARIANT varVal;<br>childNode-&gt;get_nodeTypedValue(&amp;varVal);<br>CString strValue = (char*)(_bstr_t)varVal;<br>//节点属性,放在链表中<br>MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL; <br>MSXML2::IXMLDOMNodePtr pAttrItem;<br>childNode-&gt;get_attributes(&amp;pAttrs);<br>long nCount ;<br>pAttrs-&gt;get_length(&amp;nCount);<br>for(int i = 0 ; i &lt; nCount ; i++)<br>{&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>pAttrs-&gt;get_item(i,&amp;pAttrItem);<br>//我们可以通过函数get_nodeName,get_nodeTypedValue得到属性名和属性值<br>//也可以直接得到<br>CString strAttrName&nbsp;&nbsp; = (char*)(_bstr_t)pAttrItem-&gt;nodeName;<br>CString strAttrValue&nbsp; = (char*)(_bstr_t)pAttrItem-&gt;nodeTypedValue;<br>}<br>}<br>//创建<br>void CMainFrame::OnCreatexmldoc() <br>{<br>MSXML2::IXMLDOMElementPtr&nbsp; xmlRoot;<br>&nbsp;//根节点的名称为china<br>&nbsp;&nbsp;&nbsp; pXMLDoc-&gt;raw_createElement((_bstr_t)(char*)"china", &amp;xmlRoot);<br>//MSXML2::IXMLDOMNamedNodeMapPtr pAttrs = NULL; <br>//pAttrs-&gt;length=2;<br>//xmlRoot-&gt;raw_setAttributeNode(<br>//xmlRoot-&gt;setAttributeNode(attributes.setAttribute("fengjie","fengjie test root attribute");<br>xmlRoot-&gt;setAttribute("fengjie","ddd test root attribute");<br>pXMLDoc-&gt;raw_appendChild(xmlRoot, NULL);<br>MSXML2::IXMLDOMElementPtr&nbsp; childNode ;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; <br>pXMLDoc-&gt;raw_createElement((_bstr_t)(char*)"City:dd", &amp;childNode);<br>childNode-&gt;Puttext("WuHan");//节点值<br>childNode-&gt;setAttribute("population","8,000,000");//属性名,属性值<br>childNode-&gt;setAttribute("area","10000");<br>xmlRoot-&gt;appendChild(childNode);<br>pXMLDoc-&gt;raw_createElement((_bstr_t)(char*)"City:xx", &amp;childNode);<br>childNode-&gt;Puttext("ShangHai");<br>childNode-&gt;setAttribute("population","12,000,000");<br>childNode-&gt;setAttribute("area","12000");<br>xmlRoot-&gt;appendChild(childNode);<br>//保存到文件<br>//如果不存在就建立,存在就覆盖<br>pXMLDoc-&gt;save("c:\\XML\\he.xml"); <br>}&nbsp; 
<img src ="http://www.cppblog.com/ipuerta/aggbug/66295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ipuerta/" target="_blank">IP</a> 2008-11-08 02:06 <a href="http://www.cppblog.com/ipuerta/archive/2008/11/08/66295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>使用CMarkUp解析XML</title><link>http://www.cppblog.com/ipuerta/archive/2008/11/08/66294.html</link><dc:creator>IP</dc:creator><author>IP</author><pubDate>Fri, 07 Nov 2008 18:04:00 GMT</pubDate><guid>http://www.cppblog.com/ipuerta/archive/2008/11/08/66294.html</guid><wfw:comment>http://www.cppblog.com/ipuerta/comments/66294.html</wfw:comment><comments>http://www.cppblog.com/ipuerta/archive/2008/11/08/66294.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ipuerta/comments/commentRss/66294.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ipuerta/services/trackbacks/66294.html</trackback:ping><description><![CDATA[<p style="FONT-FAMILY: Verdana"><a href="http://www.firstobject.com/dn_markupmethods.htm">http://www.firstobject.com/dn_markupmethods.htm</a></p>
<p style="FONT-FAMILY: Verdana">学习笔记</p>
<p style="FONT-FAMILY: Verdana">在一个目录下的搜索，即FindElem（）不分先后出现顺序。</p>
<p style="FONT-FAMILY: Verdana">(一) 先讲一下XML中的物殊字符，手动填写时注意一下。 </p>
<p style="FONT-FAMILY: Verdana"></p>
<p style="FONT-FAMILY: Verdana">字符&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;字符实体<br>&amp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;amp;或&amp;<br>'&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;apos;或'<br>&gt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;gt;或&gt;<br>&lt;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; &amp;lt;或&amp;&lt;<br>"&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&amp;quot;或"<br></p>
<p style="FONT-FAMILY: Verdana"><br>(二) CMarkup类的源代码。</p>
<p style="FONT-FAMILY: Verdana">这是目前的最新版本；</p>
<p style="FONT-FAMILY: Verdana">这是官网示例文件，取出里面的Markup.cpp和Markup.h，导入你的工程里面，CMarkup类就可以用了；</p>
<p style="FONT-FAMILY: Verdana">下载地址：<a href="http://www.firstobject.com/Markup83.zip">http://www.firstobject.com/Markup90.zip</a><br></p>
<p style="FONT-FAMILY: Verdana"><br>(三) 创建一个XML文档。</p>
<p style="FONT-FAMILY: Verdana">CMarkup xml;<br>xml.AddElem( "ORDER" );<br>xml.AddChildElem( "ITEM" );<br>xml.IntoElem();<br>xml.AddChildElem( "SN", "<st1:chmetcnv unitname="a" sourcevalue="132487" hasspace="False" negative="False" numbertype="1" tcsc="0">132487A</st1:chmetcnv>-J" );<br>xml.AddChildElem( "NAME", "crank casing" );<br>xml.AddChildElem( "QTY", "1" );<br>xml.Save("c:\\UserInfo.xml");</p>
<p style="FONT-FAMILY: Verdana">效果如下：</p>
<pre>&lt;ORDER&gt;</pre>
<pre>&lt;ITEM&gt;</pre>
<pre>&lt;SN&gt;<st1:chmetcnv unitname="a" sourcevalue="132487" hasspace="False" negative="False" numbertype="1" tcsc="0">132487A</st1:chmetcnv>-J&lt;/SN&gt;</pre>
<pre>&lt;NAME&gt;crank casing&lt;/NAME&gt;</pre>
<pre>&lt;QTY&gt;1&lt;/QTY&gt;</pre>
<pre>&lt;/ITEM&gt;</pre>
<pre>&lt;/ORDER&gt;</pre>
<pre>(四) 浏览特定元素</pre>
<pre>CMarkup xml;</pre>
<pre>xml.Load("UserInfo.xml");<br>while ( xml.FindChildElem("ITEM") )</pre>
<pre>{</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.IntoElem();</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.FindChildElem( "SN" );</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   CString csSN = xml.GetChildData();</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.FindChildElem( "QTY" );</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;int nQty = atoi( xml.GetChildData() );</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.OutOfElem();</pre>
<pre>}</pre>
<pre>(五)增加元素和属性</pre>
<pre>添加在最后面,使用的是AddElem;添加在最前面,使用InsertElem。</pre>
<pre>CMarkup xml;</pre>
<pre>xml.Load("c:\\UserInfo.xml");</pre>
<pre>xml.AddElem( "ORDER" );</pre>
<pre>xml.IntoElem(); // 进入 ORDER<br><br></pre>
<pre><br><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.AddElem( "ITEM" );</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.IntoElem(); // 进入 ITEM</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.AddElem( "SN", "4238764-A" ); //添加元素</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.AddElem( "NAME", "bearing" );//添加元素</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.AddElem( "QTY", "15" );//添加元素</pre>
<pre>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;   xml.OutOfElem(); // 退出 ITEM </pre>
<pre>xml.AddElem( "SHIPMENT" );</pre>
<pre>xml.IntoElem(); // 进入 SHIPMENT</pre>
<pre>xml.AddElem( "POC" );//添加元素</pre>
<pre>xml.SetAttrib( "type", "non-emergency");//添加属性</pre>
<pre>xml.IntoElem(); // 进入 POC</pre>
<pre>xml.AddElem( "NAME", "John Smith");//添加元素</pre>
<pre>xml.AddElem( "TEL", "555-1234");//添加元素</pre>
<pre>xml.Save("c:\\UserInfo.xml");</pre>
<p style="FONT-FAMILY: Verdana"></p>
<p style="FONT-FAMILY: Verdana">效果如下：</p>
<pre>&lt;ORDER&gt;</pre>
<pre>&lt;ITEM&gt;</pre>
<pre>&lt;SN&gt;<st1:chmetcnv unitname="a" sourcevalue="132487" hasspace="False" negative="False" numbertype="1" tcsc="0">132487A</st1:chmetcnv>-J&lt;/SN&gt;</pre>
<pre>&lt;NAME&gt;crank casing&lt;/NAME&gt;</pre>
<pre>&lt;QTY&gt;1&lt;/QTY&gt;</pre>
<pre>&lt;/ITEM&gt;</pre>
<pre>&lt;ITEM&gt;</pre>
<pre>&lt;SN&gt;4238764-A&lt;/SN&gt;</pre>
<pre>&lt;NAME&gt;bearing&lt;/NAME&gt;</pre>
<pre>&lt;QTY&gt;15&lt;/QTY&gt;</pre>
<pre>&lt;/ITEM&gt;</pre>
<pre>&lt;SHIPMENT&gt;</pre>
<pre>&lt;POC type="non-emergency"&gt;</pre>
<pre>&lt;NAME&gt;John Smith&lt;/NAME&gt;</pre>
<pre>&lt;TEL&gt;555-1234&lt;/TEL&gt;</pre>
<pre>&lt;/POC&gt;</pre>
<pre>&lt;/SHIPMENT&gt;</pre>
<pre>&lt;/ORDER&gt;</pre>
<p style="FONT-FAMILY: Verdana">(六) 修改元素和属性</p>
<p style="FONT-FAMILY: Verdana">如将POC中的属性type改成：change;</p>
<p style="FONT-FAMILY: Verdana">元素TEL改成：123456789</p>
<p style="FONT-FAMILY: Verdana">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CMarkup xml;<br>if (xml.Load("UserInfo.xml"))<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString strUserID = _T("");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.ResetMainPos();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (xml.FindChildElem("SHIPMENT"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.IntoElem();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (xml.FindChildElem("POC"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.IntoElem();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString str_type=xml.GetAttrib("type");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; MessageBox(str_type);<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.SetAttrib("type","change");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; strUserID = xml.GetData();<br>&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (xml.FindChildElem("TEL"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.IntoElem();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.SetData("123456789");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.Save("UserInfo.xml");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; return;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}</p>
<p style="FONT-FAMILY: Verdana">(七)删除元素：</p>
<p style="FONT-FAMILY: Verdana">删除SN=<st1:chmetcnv unitname="a" sourcevalue="132487" hasspace="False" negative="False" numbertype="1" tcsc="0">132487A</st1:chmetcnv>-J的项目。</p>
<p style="FONT-FAMILY: Verdana">CMarkup xml;<br>if (xml.Load("UserInfo.xml"))<br>{<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString strUserID = _T("");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.ResetMainPos();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if (xml.FindChildElem("ITEM"))<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.IntoElem();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; CString str_sn;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.FindChildElem("SN");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; str_sn=xml.GetChildData();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(str_sn=="<st1:chmetcnv unitname="a" sourcevalue="132487" hasspace="False" negative="False" numbertype="1" tcsc="0">132487A</st1:chmetcnv>-J")<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.RemoveElem();<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; xml.Save("UserInfo.xml");<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }<br>}</p>
<img src ="http://www.cppblog.com/ipuerta/aggbug/66294.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ipuerta/" target="_blank">IP</a> 2008-11-08 02:04 <a href="http://www.cppblog.com/ipuerta/archive/2008/11/08/66294.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>用CMarkup类操纵XML </title><link>http://www.cppblog.com/ipuerta/archive/2008/11/08/66293.html</link><dc:creator>IP</dc:creator><author>IP</author><pubDate>Fri, 07 Nov 2008 18:01:00 GMT</pubDate><guid>http://www.cppblog.com/ipuerta/archive/2008/11/08/66293.html</guid><wfw:comment>http://www.cppblog.com/ipuerta/comments/66293.html</wfw:comment><comments>http://www.cppblog.com/ipuerta/archive/2008/11/08/66293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ipuerta/comments/commentRss/66293.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ipuerta/services/trackbacks/66293.html</trackback:ping><description><![CDATA[首先到<a href="http://www.firstobject.com/"><u><font color=#0000ff>http://www.firstobject.com/</font></u></a>下载CMarkup教学版，解压后里面是一个DEMO，将Markup.h .cpp拷贝并添加到工程中，第一次编译可能会出现预编译错误，解决的方法在Markup.cpp最前面include "stdafx.h"，或者关闭预编译。<br>　　以下转自<a href="http://www.sqlite.com.cn/MySqlite/12/211.Html"><u><font color=#810081>http://www.sqlite.com.cn/MySqlite/12/211.Html</font></u></a><br>//----------UserInfo.xml--------------<br>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br>&lt;UserInfo&gt;<br>&lt;UserID&gt;luo&lt;/UserID&gt;<br>&lt;UserID&gt;lin&lt;/UserID&gt;<br>&lt;/UserInfo&gt;
<p><br>1。生成UserInfo.xml<br>CMarkup xml;</p>
<p>xml.SetDoc("&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;\r\n");<br>xml.AddElem("UserInfo");<br>xml.IntoElem();<br>xml.AddElem("UserID","luo");<br>xml.AddElem("UserID","lin");<br>xml.OutOfElem();<br>xml.Save("UserInfo.xml");</p>
<p>2。浏览特定元素<br>//----查看所有UserID----<br>CMarkup xml;<br>xml.Load("UserInfo.xml");</p>
<p>BOOL bFind = true;<br>xml.ResetMainPos();<br>while (xml.FindChildElem("UserID");)<br>{</p>
<p>//此时接点还是父接点<br>CString strTagName = _T("");<br>CString strData = _T("");</p>
<p>strTagName = xml.GetChildTagName();<br>strData = xml.GetChildData();<br>TRACE("\n---tagName:%s,Data:%s--\n",strTagName,strData);</p>
<p>}</p>
<p>/********************这样也可以******************<br>CMarkup xml;<br>xml.Load("UserInfo.xml");<br>BOOL bFind = true;<br>xml.ResetMainPos();</p>
<p>while (xml.FindChildElem("UserID");)<br>{</p>
<p>xml.IntoElem();<br>CString strTagName = _T("");<br>CString strData = _T("");<br>strTagName = xml.GetTagName();<br>strData = xml.GetData();<br>TRACE("\n---tagName:%s,Data:%s--\n",strTagName,strData);<br>xml.OutOfElem();</p>
<p>}*/</p>
<p>/**************这样也可以**********************<br>CMarkup xml;<br>xml.Load("UserInfo.xml");</p>
<p>BOOL bFind = true;<br>xml.ResetMainPos();<br>xml.FindElem(); //UserInfo<br>xml.IntoElem();</p>
<p>while (xml.FindElem("UserID");)<br>{</p>
<p>CString strTagName = _T("");<br>CString strData = _T("");</p>
<p>strTagName = xml.GetTagName();<br>strData = xml.GetData();</p>
<p>TRACE("\n---tagName:%s,Data:%s--\n",strTagName,strData);</p>
<p>}<br>*/</p>
<p>//-------------结果----------<br>---tagName:UserID,Data:luo--<br>---tagName:UserID,Data:lin—</p>
<p>3。修改<br>//--------把UserID为&#8221;luo&#8221;改为&#8221;flypigluo&#8221;-----------<br>BOOL bLoadXml = false;<br>CMarkup xml;<br>bLoadXml = xml.Load("UserInfo.xml");</p>
<p>if (bLoadXml)<br>{</p>
<p>CString strUserID = _T("");<br>xml.ResetMainPos();<br>xml.FindElem();<br>xml.IntoElem();</p>
<p><br>while (xml.FindElem("UserID"))<br>{</p>
<p>strUserID = xml.GetData();<br>if (strUserID=="luo")<br>{</p>
<p>xml.SetData(CString("flypig")+strUserID);<br>xml.Save("UserInfo.xml");<br>break;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>4。添加</p>
<p>4。1 添在最后面（使用的是AddElem）<br>//加在最后面<br>BOOL bLoadXml = false;<br>CMarkup xml;<br>bLoadXml = xml.Load("UserInfo.xml");</p>
<p>if (bLoadXml)<br>{</p>
<p>xml.ResetMainPos();<br>xml.FindElem();<br>xml.IntoElem();<br>xml.AddElem("UserID","luoluo");<br>xml.OutOfElem();<br>xml.Save("UserInfo.xml");</p>
<p>}</p>
<p>//--------原来为------</p>
<p>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br>&lt;UserInfo&gt;<br>&lt;UserID&gt;luo&lt;/UserID&gt;<br>&lt;UserID&gt;lin&lt;/UserID&gt;<br>&lt;/UserInfo&gt;</p>
<p>//---------添加后为-------------<br>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br>&lt;UserInfo&gt;<br>&lt;UserID&gt;luo&lt;/UserID&gt;<br>&lt;UserID&gt;lin&lt;/UserID&gt;<br>&lt;UserID&gt;luoluo&lt;/UserID&gt;<br>&lt;/UserInfo&gt;</p>
<p>4。2 加在最前面（使用InsertElem）<br>BOOL bLoadXml = false;<br>CMarkup xml;<br>bLoadXml = xml.Load("UserInfo.xml");</p>
<p>if (bLoadXml)</p>
<p>{</p>
<p>xml.ResetMainPos();</p>
<p>xml.FindElem();<br>xml.IntoElem();<br>xml.InsertElem("UserID","AddUserIDHead");<br>xml.OutOfElem();<br>xml.Save("UserInfo.xml");</p>
<p>}</p>
<p>//----原来为—<br>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br>&lt;UserInfo&gt;<br>&lt;UserID&gt;luo&lt;/UserID&gt;<br>&lt;UserID&gt;lin&lt;/UserID&gt;<br>&lt;/UserInfo&gt;</p>
<p>&nbsp;</p>
<p>//------修改后-----<br>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br>&lt;UserInfo&gt;<br>&lt;UserID&gt;AddUserIDHead&lt;/UserID&gt;<br>&lt;UserID&gt;luo&lt;/UserID&gt;<br>&lt;UserID&gt;lin&lt;/UserID&gt;<br>&lt;/UserInfo&gt;</p>
<p>5。删除<br>CMarkup xml;<br>xml.Load("UserInfo.xml");<br>BOOL bFind = true;<br>xml.ResetMainPos();</p>
<p>while (bFind)</p>
<p>{</p>
<p>bFind = xml.FindChildElem("UserID");</p>
<p>if (bFind)<br>{//此时接点还是父接点</p>
<p>CString strData = _T("");<br>strData = xml.GetChildData();</p>
<p>if (strData=="luo")</p>
<p>{</p>
<p>xml.RemoveChildElem();<br>xml.Save("UserInfo.xml");<br>break;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>6。查找</p>
<p>见第二点浏览。类似</p>
<p>上面的例子里面没有属性这些东西，下面的一个例子是有属性的<br>//UserInfo1.xml<br>&lt;?xml version="1.0" encoding="UTF-8" ?&gt;<br>&lt;UserInfo&gt;<br>&lt;User UserID="UserID00" UserPwd="UserPwd00" UserLevel="158" /&gt;<br>&lt;User UserID="UserID01" UserPwd="UserPwd01" UserLevel="162" /&gt;<br>&lt;User UserID="UserID02" UserPwd="UserPwd02" UserLevel="165" /&gt;<br>&lt;User UserID="UserID03" UserPwd="UserPwd03" UserLevel="168" /&gt;<br>&lt;User UserID="UserID04" UserPwd="UserPwd04" UserLevel="171" /&gt;<br>&lt;User UserID="UserID05" UserPwd="UserPwd05" UserLevel="175" /&gt;<br>&lt;User UserID="UserID06" UserPwd="UserPwd06" UserLevel="178" /&gt;<br>&lt;User UserID="UserID07" UserPwd="UserPwd07" UserLevel="181" /&gt;<br>&lt;User UserID="UserID08" UserPwd="UserPwd08" UserLevel="184" /&gt;<br>&lt;User UserID="UserID09" UserPwd="UserPwd09" UserLevel="188" /&gt;<br>&lt;/UserInfo&gt;</p>
<p>7。产生<br>CString strID = _T("");<br>CString strPwd = _T("");<br>CMarkup xml;<br>xml.SetDoc("&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;");<br>xml.AddElem("UserInfo");</p>
<p>xml.IntoElem();</p>
<p>for (int i=0; i&lt;10; i++)<br>{&nbsp;&nbsp;&nbsp;&nbsp; //产生一个随机数，作为权限</p>
<p>srand(UINT(time(NULL)+i));<br>int nLevel = rand()%256;<br>strID.Format("UserID%02d",i);<br>strPwd.Format("UserPwd%02d",i);<br>xml.AddElem("User");<br>xml.AddAttrib("UserID",strID);<br>xml.AddAttrib("UserPwd",strPwd);<br>xml.AddAttrib("UserLevel",nLevel);</p>
<p>}</p>
<p>xml.OutOfElem();<br>xml.Save("UserInfo1.xml");</p>
<p>8。查找<br>CMarkup xml;<br>BOOL bLoad = false;<br>BOOL bFind = false;<br>bLoad = xml.Load("UserInfo1.xml");</p>
<p>if (bLoad)<br>{</p>
<p>CString strID;<br>CString strPwd;<br>xml.ResetMainPos();<br>xml.FindElem(); //UserInfo<br>while (xml.FindChildElem("User"))<br>{</p>
<p>strID = xml.GetChildAttrib("UserID");<br>strPwd = xml.GetChildAttrib("UserPwd");<br>TRACE("\n----id:%s,pwd:%s-------\n",strID,strPwd);</p>
<p>&nbsp;</p>
<p>if (strID=="UserID00"&amp;&amp;strPwd=="UserPwd00")<br>{</p>
<p>bFind = true;<br>break;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>&nbsp;</p>
<p>if (bFind)<br>{</p>
<p>TRACE("\n---- find------\n");<br>}<br>else<br>{</p>
<p>TRACE("\n----no find------\n");<br>}</p>
<p>9。修改<br>CMarkup xml;<br>BOOL bLoad = false;<br>BOOL bFind = false;<br>bLoad = xml.Load("UserInfo1.xml");</p>
<p>if (bLoad)</p>
<p>{</p>
<p>CString strID;<br>CString strPwd;</p>
<p>xml.ResetMainPos();<br>xml.FindElem(); //UserInfo</p>
<p>while (xml.FindChildElem("User"))</p>
<p>{</p>
<p>strID = xml.GetChildAttrib("UserID");<br>strPwd = xml.GetChildAttrib("UserPwd");<br>TRACE("\n----id:%s,pwd:%s-------\n",strID,strPwd);</p>
<p>if (strID=="UserID00"&amp;&amp;strPwd=="UserPwd00")<br>{</p>
<p>bFind = true;<br>xml.SetChildAttrib("UserID",strID+CString("Modify"));<br>xml.Save("UserInfo1.xml");<br>break;</p>
<p>}</p>
<p>}</p>
<p>}</p>
<p>if (bFind)<br>{</p>
<p>TRACE("\n---- find------\n");<br>}<br>else<br>{</p>
<p>TRACE("\n----no find------\n");<br>}<br></p>
<img src ="http://www.cppblog.com/ipuerta/aggbug/66293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ipuerta/" target="_blank">IP</a> 2008-11-08 02:01 <a href="http://www.cppblog.com/ipuerta/archive/2008/11/08/66293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>