常用的XML解析器
TinyXML: 是一个简单的开源的解析XML的解析库(DOM模型)
RapidXml: 是一个使用c++ 编写的XML DOM 解析工具包,整个解析工具包包含在一个头文件中,搜易使用时不用编译也不用连接。只要包含rapidxml 中的三个头文件即可
Xerces-C++:是Apache 组织所推动的一项XML 我都能当解析开源项目,通过DOM、SZX 等方式解析
libXML:是一个用于解析xml文件的库,在各个平台下都有使用,也支持多种语言,如c、python 等;
boost库中的property_tree 库是一个保存了多个属性的属性数据结构,可以很方便的解析或生成xml、json、ini、info、文件。property_tree库的核心类是 basic_ptree
#include<boost/property_tree/ptree.hpp>
#include < boost/property_tree/xml_parser.hpp>
using namespace boost::property_tree;
test.xml
<stu>
<name id="1000">小明<name>
<age>18</age>
<score>8.2</score>
<lesson>
<name>语文</name>
<name>数学</name>
</lesson>
</stu>
ptree pt;
read_xml("test.xml",pt);
cout << pt.get<string>("stu.name") <<endl;
cout << pt.get<string>("stu.name.<xmlattr>.id") <<endl;
cout << pt.get<int>("stu.age") <<endl;
cout << pt.get<double>("stu.score") <<endl;
cout << pt.ge("stu.sex","保密") <<endl; 没有则设置默认值
auto child = pt.get_child("stu.lesson");
for(auto pos=child.begin();pos!=child.end();pos++){
cout << pos->first.data() << pos->second.data() <<endl;
}