﻿<?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++博客-小鸟学C++-文章分类-C++之Xerces学习</title><link>http://www.cppblog.com/zjy17243/category/17288.html</link><description>基础学习</description><language>zh-cn</language><lastBuildDate>Mon, 11 Jul 2011 18:35:27 GMT</lastBuildDate><pubDate>Mon, 11 Jul 2011 18:35:27 GMT</pubDate><ttl>60</ttl><item><title>Xerces C++ 学习笔记</title><link>http://www.cppblog.com/zjy17243/articles/150697.html</link><dc:creator>月下孤影</dc:creator><author>月下孤影</author><pubDate>Mon, 11 Jul 2011 12:07:00 GMT</pubDate><guid>http://www.cppblog.com/zjy17243/articles/150697.html</guid><description><![CDATA[<span style="font-family: Verdana; font-size: 13px; line-height: 18px; "><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">1．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">初始化平台：</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">XMLPlatformUtils::Initialze()</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">2．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">销毁平台：</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">XMLPlatformUtils::Terminate();</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">3．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">加载分析报文</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">XercesDOMParser<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;</span>*parser = new XercesDOMParser();</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; ">Parser-&gt;parse(&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">参数</span>&nbsp;<span twffan="done" style="line-height: 19px; ">);&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">这个参数可以直接是文件名，也可以是内存的数据，具体的查看</span>&nbsp;<span twffan="done" style="line-height: 19px; ">API</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">4．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">数据格式转换</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; ">XMLString.transcode()&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">这个方法有多个重载，既可以把</span>&nbsp;<span twffan="done" style="line-height: 19px; ">XMLCh *&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">格式的数据转换成</span>&nbsp;<span twffan="done" style="line-height: 19px; ">char *&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">的数据，也可以把</span>&nbsp;<span twffan="done" style="line-height: 19px; ">char *&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">的数据转换成</span>&nbsp;<span twffan="done" style="line-height: 19px; ">XMLCh *,&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">我们也可以利用这个函数来初始化</span>&nbsp;<span twffan="done" style="line-height: 19px; ">XMLCh&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">格式类型的数组，比如</span>&nbsp;<span twffan="done" style="line-height: 19px; ">XMLCh temp[100];</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;</span>XMLString.transcode(&#8220;LS&#8221;,temp,99);//&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">用&#8220;</span>&nbsp;<span twffan="done" style="line-height: 19px; ">LS&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">&#8221;初始化</span>&nbsp;<span twffan="done" style="line-height: 19px; ">temp&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">这个数组的内容。</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">5．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">分析报文后，如何得到文档的树型结构</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">DOMDocument *xmlDoc = parser-&gt;getDocument();</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">6．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">得到树型结构后，如何得到第一个根节点</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">DOMElement *root = xmlDoc-&gt;getDocumentElement();</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">7．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">如何遍历文档的结构</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; font-family: 宋体; ">遍历一个树型的文档结构有三种方法。</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; ">1&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">．使用</span>&nbsp;<span twffan="done" style="line-height: 19px; ">DOMNodeIterator&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">类</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">DOMNodeIterator *iterator = xmlDoc-&gt;createNodeIterator(root, DOMNodeFilter::SHOW_TEXT,<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;</span>NULL, true);</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">for ( DOMNode * current = (DOMNode *)iterator-&gt;nextNode(); current != 0; current = (DOMNode *)iterator-&gt;nextNode() )</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">{</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>string strValue = XMLString::transcode(current-&gt;getNodeValue());</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>std::cout &lt;&lt;strValue&lt;&lt;endl;</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; ">&nbsp;}//&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">以上就可以把</span>&nbsp;<span twffan="done" style="line-height: 19px; ">xml&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">文档中的属性为</span>&nbsp;<span twffan="done" style="line-height: 19px; ">NODETEXT&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">节点的内容给打印出来。</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; ">2&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">．使用</span>&nbsp;<span twffan="done" style="line-height: 19px; ">DOMTreeWalker&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">类</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 14px; font-size: 8pt; color: black; font-family: Tahoma; ">D</span>&nbsp;<span twffan="done" style="line-height: 15px; ">OMTreeWalker *walker =&nbsp;&nbsp;xmlDoc-&gt;createTreeWalker(root, DOMNodeFilter::SHOW_TEXT, NULL, true);</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 14px; font-size: 8pt; color: black; font-family: Tahoma; ">f</span>&nbsp;<span twffan="done" style="line-height: 15px; ">or (DOMNode *current = walker-&gt;nextNode(); current != 0; current = walker-&gt;nextNode() )&nbsp; &nbsp;</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">&nbsp;{</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">&nbsp; &nbsp;&nbsp; &nbsp;char *strValue = XMLString::transcode( current-&gt;getNodeValue() );&nbsp; &nbsp; &nbsp;std::cout &lt;&lt;strValue;<br />&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;&nbsp; &nbsp;XMLString::release(&amp;strValue);&nbsp; &nbsp;</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">}</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; ">3&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">．使用子节点直接遍历树型结构</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;</span>DOMNode *n = (DOMNode*)xmlDoc-&gt;getDocumentElement();</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">//&nbsp;</span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">下面开始遍历这个树的结构</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">if(n)</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">{</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>if (n-&gt;getNodeType() == DOMNode::ELEMENT_NODE)</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>{</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;DOMNodeList* nodeList = n-&gt;getChildNodes();</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;unsigned int nListLen = nodeList-&gt;getLength();</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;for (unsigned int i=0; i&lt;nListLen; ++i)</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>&nbsp;{</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>DOMNode* nodeTemp = nodeList-&gt;item(i);</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>if (nodeTemp-&gt;getNodeType() == DOMNode::ELEMENT_NODE)</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>{</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;&nbsp;</span>for (DOMNode* node1=nodeTemp-&gt;getFirstChild(); node1!=0; node1=node1-&gt;getNextSibling())</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;&nbsp;</span>{</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>char* name = XMLString::transcode(node1-&gt;getNodeName());</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>string strTemp = name;</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>if (strTemp == "name")<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;</span>//&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">这个就是跟</span>&nbsp;<span twffan="done" style="line-height: 19px; ">xml&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">文档中</span>&nbsp;<span twffan="done" style="line-height: 19px; ">name&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">节点匹配</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>{</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>char* myname=XMLString::transcode(node1-&gt;getFirstChild()-&gt;getNodeValue());</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>cout&lt;&lt;myname&lt;&lt;endl;</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&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;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>continue;</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>}</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">}</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">8．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">如何添加子节点。</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;</span>//Add new (empty) Element to the root element<br />&nbsp;&nbsp;&nbsp;&nbsp; DOM_Element parentNode = &#8230;;// parent is known<br />&nbsp;&nbsp;&nbsp;&nbsp; DOM_Element prodElem = doc-&gt;createElement (tagName);<br />&nbsp;&nbsp;&nbsp;&nbsp; parentNode-&gt;appendChild (prodElem);</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">9．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">在加载</span>&nbsp;<span twffan="done" style="line-height: 19px; ">xml&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">文件分析前，有两种加载方式：一种直接通过文件加载，一种是通过内存加载</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">1．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; ">String xmlfile = &#8220;a.xml&#8221;;</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; ">Parser-&gt;parse(xmlfile.c_str());</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>2.MemBufInputSource &nbsp;&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">这个类处理内存的数据，然后利用</span>&nbsp;<span twffan="done" style="line-height: 19px; ">parser-&gt;parse(*men)//men&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">是</span>&nbsp;<span twffan="done" style="line-height: 19px; ">MemBufInputSource &nbsp;&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">的实例指针对象。</span></p><table cellspacing="0" cellpadding="0" border="0"><tbody><tr><td valign="top" style="font-size: 12px; "><p align="right" style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; ">&nbsp;</p></td></tr></tbody></table><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">10．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">在加载分析报文前，可以设置</span>&nbsp;<span twffan="done" style="line-height: 19px; ">XercesDOMParser&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">的一些属性。</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span twffan="done" style="line-height: 14px; font-size: 8pt; color: black; font-family: Tahoma; ">P</span>&nbsp;<span twffan="done" style="line-height: 15px; ">arser-&gt;setValidationScheme( XercesDOMParser::Val_Auto );<br />&nbsp;&nbsp;<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;</span><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;</span>Parser-&gt;setDoNamespaces( false );<br />&nbsp; &nbsp;&nbsp;<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Parser-&gt;setDoSchema( false );<br />&nbsp; &nbsp;&nbsp;<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>Parser-&gt;setLoadExternalDTD( false );</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>//&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">这个部分的代码可以参照类库自带的例子。</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">11．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">我们也可以设置错误的处理代码。</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">这部分可以查看类库下的</span>&nbsp;<span twffan="done" style="line-height: 19px; ">DOMPrint&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">例子。</span>&nbsp;<span twffan="done" style="line-height: 19px; ">DOMError ,DOMErrorHandler</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">12．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">也可以设置分析过滤的属性</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>DOMNodeFilter<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;</span></span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">这个类能起到这个效果</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 15px; "><span twffan="done" style="line-height: 15px; ">13．&nbsp;<span twffan="done" style="line-height: normal; font: normal normal normal 7pt/normal 'Times New Roman'; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span></span><span twffan="done" style="line-height: 15px; font-family: 宋体; ">要美化文档的格式化输出，我们可以使用</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; "><span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span>XMLFormatter<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;</span>XMLFormatTarget<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;</span>,&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">用的时候可以查看。</span></p><p style="margin-top: 10px; margin-right: 0px; margin-bottom: 10px; margin-left: 0px; "><span twffan="done" style="line-height: 19px; ">14<span twffan="done" style="line-height: 19px; ">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span></span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">我们也可以通过</span>&nbsp;<span twffan="done" style="line-height: 19px; ">DOMImplementationLs , DOMImplementation&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">前者是后者的基类。通过这个类我们可以创建</span>&nbsp;<span twffan="done" style="line-height: 19px; ">DOMBuilder&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">（</span>&nbsp;<span twffan="done" style="line-height: 19px; ">parser&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">）或</span>&nbsp;<span twffan="done" style="line-height: 19px; ">DOMWriter&nbsp;</span><span twffan="done" style="line-height: 19px; font-family: 宋体; ">（序列，既可以写到屏幕，也可以写到文件）<div style="display: inline-block; "></div></span></p></span><span class="Apple-style-span" style="font-family: Verdana; font-size: 13px; line-height: 18px; "><h1 align="center" style="margin-right: 0px; margin-left: 0px; margin-top: 10px; margin-bottom: 5px; font-size: 1em; "><font size="6"><font color="#000000"><span lang="EN-US" twffan="done" style="line-height: 38px; "><font face="Times New Roman">Xerces C++&nbsp;</font></span><span twffan="done" style="line-height: 38px; font-family: 宋体; ">学习笔记</span></font></font></h1></span><img src ="http://www.cppblog.com/zjy17243/aggbug/150697.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/zjy17243/" target="_blank">月下孤影</a> 2011-07-11 20:07 <a href="http://www.cppblog.com/zjy17243/articles/150697.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>