1.源码实现
#include <iostream>
#include <xercesc/util/PlatformUtils.hpp>
#include <xercesc/dom/DOM.hpp>
#include <xercesc/sax/HandlerBase.hpp>
#include <xercesc/parsers/XercesDOMParser.hpp>
using namespace std;
using namespace xercesc;
int main(int argc, char **argv)
{
//初始化环境
XMLPlatformUtils::Initialize();
//获取解析器
XercesDOMParser *parser = new XercesDOMParser();
//设置支持命名空间
parser->setDoNamespaces(true);
parser->setValidationScheme(XercesDOMParser::Val_Always);
ErrorHandler *errHandler = (ErrorHandler *)new HandlerBase();
//设置错误返回
parser->setErrorHandler(errHandler);
//加载xml
parser->parse("aaa.xml");
//得到文档结构
DOMDocument *doc = parser->getDocument();
//读取根节点
DOMElement *root = doc->getDocumentElement();
//获取子元素
const XMLCh *from = XMLString::transcode("from");
DOMNodeList *childs = root->getElementsByTagName(from);
DOMNode *child = childs->item(0);
cout << childs << endl;
cout << child << endl;
char *name = XMLString::transcode(child->getNodeName());
char *content = XMLString::transcode(child->getFirstChild()->getNodeValue());
cout << name << endl;
cout << content << endl;
//释放解析器
delete errHandler;
delete parser;
return 0;
}
2.aaa.xml
<?xml version="1.0" encoding="UTF-8"?>
<note>
<to>Tove</to>
<from>Jani</from>
<heading>Reminder</heading>
<body>Don't forget me this weekend!</body>
</note>
3.编译源码
$ g++ -o test test.cpp -std=c++11 -lxerces-c
4.运行及其结果
$ ./test
0x815b88
0x8155a8
from
Jani
网友评论