1. 初始化平台:
XMLPlatformUtils::Initialze()
2. 销毁平台:
XMLPlatformUtils::Terminate();
3. 加载分析报文
XercesDOMParser *parser = new XercesDOMParser();
Parser->parse( 参数 ); 这个参数可以直接是文件名,也可以是内存的数据,具体的查看 API
4. 数据格式转换
XMLString.transcode() 这个方法有多个重载,既可以把 XMLCh * 格式的数据转换成 char * 的数据,也可以把 char * 的数据转换成 XMLCh *, 我们也可以利用这个函数来初始化 XMLCh 格式类型的数组,比如 XMLCh temp[100];
XMLString.transcode(“LS”,temp,99);// 用“ LS ”初始化 temp 这个数组的内容。
5. 分析报文后,如何得到文档的树型结构
DOMDocument *xmlDoc = parser->getDocument();
6. 得到树型结构后,如何得到第一个根节点
DOMElement *root = xmlDoc->getDocumentElement();
7. 如何遍历文档的结构
遍历一个树型的文档结构有三种方法。
1 .使用 DOMNodeIterator 类
DOMNodeIterator *iterator = xmlDoc->createNodeIterator(root, DOMNodeFilter::SHOW_TEXT, NULL, true);
for ( DOMNode * current = (DOMNode *)iterator->nextNode(); current != 0; current = (DOMNode *)iterator->nextNode() )
{
string strValue = XMLString::transcode(current->getNodue());
std::cout <<strValue<<endl;
}// 以上就可以把 xml 文档中的属性为 NODETEXT 节点的内容给打印出来。
2 .使用 DOMTreeWalker 类
D OMTreeWalker *walker = xmlDoc->createTreeWalker(root, DOMNodeFilter::SHOW_TEXT, NULL, true);
f or (DOMNode *current = walker->nextNode(); current != 0; current = walker->nextNode() )
{
char *strValue = XMLString::transcode( current->getNodue() ); std::cout <<strValue;
XMLString::release(&strValue);
}
3 .使用子节点直接遍历树型结构
DOMNode *n = (DOMNode*)xmlDoc->getDocumentElement();
// 下面开始遍历这个树的结构
if(n)
{
if (n->getNodeType() == DOMNode::ELEMENT_NODE)
{
DOMNodeList* nodeList = n->getChildNodes();
来源:(http://blog.sina.com.cn/s/blog_59f78a960100ea98.html) - Xerces C++ 学习笔记_livil_新浪博客
unsigned int nListLen = nodeList->getLength();
for (unsigned int i=0; i<nListLen; ++i)
{
DOMNode* nodeTemp = nodeList->item(i);
if (nodeTemp->getNodeType() == DOMNode::ELEMENT_NODE)
{
for (DOMNode* node1=nodeTemp->getFirstChild(); node1!=0; node1=node1->getNextSibling())
{
char* name = XMLString::transcode(node1->getNodeName());
string strTemp = name;
if (strTemp == "name") // 这个就是跟 xml 文档中 name 节点匹配
{
char* myname=XMLString::transcode(node1->getFirstChild()->getNodue());
cout<<myname<<endl;
}
}
}
continue;
}
}
}
8. 如何添加子节点。
//Add new (empty) Element to the root element
DOM_Element parentNode = …;// parent is known
DOM_Element prodElem = doc->createElement (tagName);
parentNode->appendChild (prodElem);
9. 在加载 xml 文件分析前,有两种加载方式:一种直接通过文件加载,一种是通过内存加载
1. String xmlfile = “a.xml”;
Parser->parse(xmlfile.c_str());
2.MemBufInputSource 这个类处理内存的数据,然后利用 parser->parse(*men)//men 是 MemBufInputSource 的实例指针对象。
10. 在加载分析报文前,可以设置 XercesDOMParser 的一些属性。
P arser->setValidationScheme( XercesDOMParser::Val_Auto );
Parser->setDoNamespaces( false );
Parser->setDoSchema( false );
Parser->setLoadExternalDTD( false );
// 这个部分的代码可以参照类库自带的例子。
11. 我们也可以设置错误的处理代码。
这部分可以查看类库下的 DOMPrint 例子。 DOMError ,DOMErrorHandler
12. 也可
可以设置分析过滤的属性
DOMNodeFilter 这个类能起到这个效果
13. 要美化文档的格式化输出,我们可以使用
XMLFormatter XMLFormatTarget , 用的时候可以查看。
14 我们也可以通过 DOMImplementationLs , DOMImplementation 前者是后者的基类。通过这个类我们可以创建 DOMBuilder ( parser )或 DOMWriter (序列,既可以写到屏幕,也可以写到文件)
转:http://huangxiaojian9999.blog.163.com/blog/static/1212987422010525465329/
相关推荐
Xerces-c++指南
xerces-c-3.0.0 编译好的库,可以直接... 这两个项目是 Apache XML 组的核心项目(如果看到的是“Xerces-C”而不是“Xerces-C++”,也是同一个东西,因为这个项目一开始就是用 C(译者注:原文为C++)语言编写的)。
IBM 将这两个项目的源代码让与 Apache 软件基金会(Apache Software Foundation),他们将其分别改名为 Xerces-C++ 和 Xerces-J。注:“Xerces-C”和“Xerces-C++”是同一个东西。 Xerces是一个与可扩展标记语言(XML...
Xerces-C++ XML解析Xerces-C++ Xerces-C++ DOM编程指南
使用Apache的xerces操作xml,里面是我自己写的最简单的读写xml实例,可以直接运行,vc 6.0.
抽取xerces-c++内存管理部分代码+可作为学习demo使用。
C++开源的xml解析器,当前最新的版本xerces-c-src_2_8_0。Xerces-C++ 的前身是 IBM 的 XML4C 项目。XML4C 和 XML4J 是两个并列的项目,IBM 将这两个项目的源代码让与 Apache 软件基金会,他们将其分别改名为 Xerces-...
Xerces-C++ 的前身是 IBM 的 XML4C 项目。XML4C 和 XML4J 是两个并列的项目,而 XML4J 是 Xerces-J——Java 实现——的前身。IBM 将这两个项目的源代码让与 Apache 软件基金会(Apache Software Foundation),...
xerces-c-3.2.3的64位库,由VS 2015编译而成。Xerces是由Apache组织所推动的一项XML文档解析开源项目,它目前有多种语言版本包括JAVA、C++、PERL、COM等。
Xerces-C++ (通常也称为:Xerces-C)是一套健壮、强大(同时也很庞大)的 XML 解析库,它提供了验证,以及 SAX 和 DOM API。来源:http://www.d2school.com/
Xerces-C++ (通常也称为:Xerces-C)是一套健壮、强大(同时也很庞大)的 XML 解析库,它提供了验证,以及 SAX 和 DOM API。来源:http://www.d2school.com/
Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data. A shared library is provided for ...
Xerces是由Apache组织所推动的一项XML文档解析开源项目,它目前有多种语言版本包括JAVA、C++、PERL、COM等。
Xerces-J-tools.2.11.0-xml-schema-...IBM 将这两个项目的源代码让与 Apache 软件基金会(Apache Software Foundation),他们将其分别改名为 Xerces-C++ 和 Xerces-J。注:“Xerces-C”和“Xerces-C++”是同一个东西。
Xerces解析文档Xerces解析文档Xerces解析文档Xerces解析文档
xerces-c++ 遍历xml很好的Demo,不含lib库
XML解析xerces VS2008使用
Xerces-C++ is a validating XML parser written in a portable subset of C++. Xerces-C++ makes it easy to give your application the ability to read and write XML data. A shared library is provided for ...
xerces的安装与使用
Xerces分析器可处理Java和C++,它采用互联网联盟XML、文件对象模型以及用于XML的简单API标准。所有的Xerces分析器都是模块化可配置的。它为C++版本提供了Perl封装,允许访问Perl的XML分析器,它还提供对统一编码字符...