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++是一个基于Apache推荐的DOM(Document Object Model)C++ binding的实现,它提供了一个高性能、低内存占用率的DOM编程接口,特别适合服务器类型和多线程应用程序。下面是Xerces-C++指南中...
IBM 将这两个项目的源代码让与 Apache 软件基金会(Apache Software Foundation),他们将其分别改名为 Xerces-C++ 和 Xerces-J。注:“Xerces-C”和“Xerces-C++”是同一个东西。 Xerces是一个与可扩展标记语言(XML...
《Xerces-C++:XML解析的开源利器》 Xerces-C++是Apache软件基金会的一个重要项目,它是一款高效且可移植的XML文档解析器,支持多种编程语言,其中包括我们这里的焦点——C++。标题中的"xerces-c-3.2.3.zip"指示的...
通过阅读和学习《Xerces-C++ DOM编程指南》,开发者可以深入理解如何利用Xerces-C++ 库来构建XML处理应用,无论是读取XML配置文件,还是构建复杂的XML数据处理系统,都能游刃有余。提供的文档如`Xerces-C++_DOM(1)....
标题中的"xerces-c-3.1.1-x86-windows-vc-10.0"指的是Xerces-C++库的一个特定版本,这个版本是为32位(x86)的Windows操作系统编译的,并且使用了Microsoft Visual C++ 10.0(即Visual Studio 2010)作为编译器。...
Xerces C++是该项目的一个组成部分,它是一个用C++编写的XML解析器,具有以下特点: 1. **标准兼容性**:Xerces C++遵循W3C制定的XML 1.0和XML Schema规范,确保了对XML文档的解析符合国际标准。 2. **高性能**:...
《Xerces-C++ 3.1.1:解析XML的利器》 Xerces-C++,这个在软件开发领域中被广泛使用的开源库,版本号3.1.1,是处理XML文档的强大工具,尤其在Ambulant项目中发挥了重要作用。它的主要功能是解析XML文档,将XML数据...
本篇将深入探讨Xerces-C++中的内存管理机制,以及如何通过示例代码进行学习和应用。 Xerces-C++内存管理的核心是内存池(Memory Pool)机制。内存池是一种优化内存分配和释放的技术,它预先分配一大块连续的内存...
《Xerces-C++库在VS2008中的应用详解》 Xerces-C++是Apache软件基金会开发的一个开源的XML解析库,版本号3.1.1,专为x86架构的Windows系统设计,并且兼容Visual Studio 2008(VC9.0)编译环境。这个压缩包“xerces-...
在Unix和Linux操作系统环境下,Xerces-C++是一个强大的开源XML解析器,它实现了XML标准规范,包括DOM、SAX和XSLT等接口。Xerces-C++库被广泛用于处理XML数据,如解析、验证和转换。下面将详细介绍Xerces在Unix/Linux...
Xerces-C++是XML规范的C++实现,它提供了全面的DOM(文档对象模型)、SAX(简单API for XML)和XInclude处理。这个库支持最新的XML、XPath、XSLT、XML Schema和XML Infoset等标准,使得开发者可以方便地在C++应用...
XML,全称可扩展标记语言(Extensible Markup Language),是一种被广泛用于...而Xerces-C++作为XML解析库,提供了C++程序员处理XML的强大支持,使得开发人员能够便捷地与XML数据进行交互,实现各种复杂的应用场景。
《Xerces-C++:C语言中的XML解析库解析》 Xerces-C++是Apache软件基金会开发的一个开源XML解析库,它实现了W3C的DOM(文档对象模型)、SAX(简单API for XML)和XInclude规范。在这个特定的版本“xerces-c-3.2.3....
《Xerces-C++ 3.1.3:解析XML的强力工具》 Xerces-C++ 是一个开源的XML解析器,版本号为3.1.3,它由Apache软件基金会开发并维护,是XML处理领域的重要工具之一。Xerces-C++ 的设计目标是提供高效、可移植且功能强大...
通过深入学习Xerces解析文档,开发者可以掌握XML数据处理的核心技术,为构建XML相关的应用程序提供坚实的基础。Xerces-C++因其稳定性、跨平台性和丰富的功能,被广泛应用在各种大型项目和企业级开发中。
《Xerces-C++:Apache XML解析库的深度解析》 在信息技术领域,XML(Extensible Markup Language)作为数据交换和存储的标准格式,扮演着至关重要的角色。而Xerces-C++则是Apache软件基金会开发的一款开源、跨平台...
"xerces-c-src1_7_0.zip" 文件是Xerces-C++ 1.7.0版本的源代码包,对于学习和研究XML解析机制以及C++编程具有极高的价值。本文将深入探讨Xerces-C++ 的核心功能、设计原则以及如何通过源码理解其实现。 一、Xerces-...
《Xerces-C++在Linux环境下的应用与详解》 Xerces-C++是一个开源的、跨平台的XML解析库,其版本号为3.1.1,专为x86_64架构的Linux系统设计,且编译时使用了GCC 3.4版本的编译器。这个压缩包“xerces-c-3.1.1-x86_64...
C++开源的xml解析器,当前最新的版本xerces-c-src_2_8_0。Xerces-C++ 的前身是 IBM 的 XML4C 项目。XML4C 和 XML4J 是两个并列的项目,IBM 将这两个项目的源代码让与 Apache 软件基金会,他们将其分别改名为 Xerces-...
总的来说,"XercesXML遍历xml"示例是一个学习和理解如何使用Xerces-C++库解析和遍历XML文档的好资源,特别是对于那些希望在C++项目中处理XML数据的开发者而言。通过深入研究这个示例,你可以掌握XML解析的关键概念和...