c++11 boost - 容器(5) property_tree
首页 计算机相关 c++11-boost库 c++11 boost - 容器(5) property_tree
property_tree 可以解析xml、json、ini、info。
解析 xmlusing namespace boost::property_tree;
ptree pt;
pt.get("debug.sex","0"); //如果获取不到则返回"0"
pt.get_child("debug.modules"); //获取子对象
pt.add_child("debug.modules"); //新增子对象
read_xml(string&, ptree&,xml_parser::trim_whitespace); //不格式化
read_xml(basic_istream&, ptree &);
write_xml(string &, ptree&);
write_xml(basic_ostream &, ptree &);
pt.put("conf.urls.url", "aaa") //只能新增,修改已有的属性值,不能添加新节点
pt.add("conf.urls.url", "bbb") //新增新节点
pt.get("debug."); //获取注释
//获取属性
pt.get("debug.file..name");
pt.get("debug.file..age");
下面是 conf.xml
1
matrix
http://www.daileinote.com
http://www.url1.com
http://www.url2.com
24
// Copyright (c) 2015
// Author: Chrono Law
#include
using namespace std;
#include
#include
using namespace boost::property_tree;
void case1()
{
ptree pt;
read_xml("conf.xml", pt);
pt.get("conf.theme");
pt.get("conf.clock_style");
pt.get("conf.no_prop", 100); //如果不存在,返回100
cout << pt.get("conf.theme") << endl;
cout << pt.get("conf.clock_style") << endl;
cout << pt.get("conf.gui")<< endl;
cout << pt.get("conf.no_prop", 100)<< endl;
//遍历子节点
auto child = pt.get_child("conf.urls");
for (auto& x : child){
cout << x.second.get_value() << ",";
}
cout << endl;
for(auto& x : pt.get_child("conf.urls")