boost property_ptree库解析XML文件

本文介绍了如何使用boost的property_ptree库解析XML文件,作者对比了它与tinyXML库的使用体验,并指出其简易性和高效性。通过get和getChild函数可以方便地获取元素值和子节点,同时强调在使用过程中应注意异常处理和默认值设置以增强程序稳定性。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

看到boost里面有个property_ptree库不错,于是到网上下载了一个xml文件测试了一下,还真的比较好用,觉得比tinyXML库还好用,使用方法比较简单。

该库还可以解析ini, info, json文件,但我没试过。

xml文件大小为223kb,解析完如果不在命名窗口进行输出用了7s左右。


获得元素值使用ptree类的成员模板函数get,在模板参数中说明数据类型,在参数列表中填写路径,路径的表示也很简况,之间用点号分隔。

获得元素属性只需要在路径中的属性名称前面加上<xmlattr>标记就可以了,还有<xmlcomment>获得注释等。

对于有多个子元素的元素结点,我们可以使用getChild()来获得它的子结点,然后就可以像使用STL中的迭代器一样对子元素进行遍历操作。

注意get和getChild的路径参数,多调试一下也是极好的。

具体用法可以参照下面的代码:

注意在使用get方法时最好给出第二个参数用作默认值,这样如果没有找到该属性,函数会返回该默认值,否则,程序会崩溃,最好对getChild

方法进行异常的捕获,以提高程序的鲁棒性。


文件结构复杂度适中:



解析代码如下:

<span style="font-family:Courier New;font-size:14px;"><span style="font-family:Courier New;font-size:12px;">#include <vector>
#include <iterator>
#include <string>
#include <algorithm>
#include <tchar.h>
#include <basetsd.h>
#include <iostream>

#include "boost/timer.hpp"
#include "boost/property_tree/ptree.hpp"
#include "boost/property_tree/xml_parser.hpp"
#include "boost/property_tree/exceptions.hpp"

using namespace std;

struct _head
{
	wstring revMajor;
	wstring revMinor;
	wstring name;
	wstring version;
	wstring date;
	wstring north;
	wstring south;
	wstring east;
	wstring west;
	wstring maxR
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值