14-boost-解析XML文件

常用的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;

}