BOOST 之 property_tree

property_tree:用于应用程序的配置的数据处理,可以解析xml,json,ini,info等格式的数据

1. 解析XML文件
    #include <boost/property_tree/ptree.hpp>          // 加载property_tree组件
    #include <boost/property_tree/xml_parser.hpp>  // 加载XML解析组件
    using namespace boost::property_tree;                 // 声明property_tree命名空间
  
    ptree pt; // 声明ptree对象 pt
    read_xml('file.xml', pt); // 解析xml配置文件

    pt.get<string>('file.theme');  // 获取xml文件中 <theme>节点的字符串值,也可使用get_value()
    pt.get<int>('file.clock_style');  // 获取xml文件中,<clock_style>节点的int值
    pt.get('file.no_prop', 100);  // 以缺省值的方法,获取xml文件中 <no_prop>节点的值,如果不存在返回 100

    // 遍历具有多个子节点的节点,先用get_child()获取urls节点对象,然后使用forsearch的方法迭代访问
    for (auto& x: pt.get_child("file.urls"))
    {
        x.second.data();    // 使用data获取各子节点(second是所有子节点的迭代称谓)的值,也可用get_value<>实现
    }

    pt.put('file.theme', 'new_string'); // 直接写入string信息,原信息被覆盖
    pt.put('file.urls.url', 'new_url');  // 向多重子节点写入信息
    pt.add('file.urls.url', 'new_url_02'); // 向多重子节点写入信息,此信息挂在新创建的一个子节点上,不会覆盖
    write_xml(cout, pt);  // 保存新的配置信息

2. 解析其他类型文件
    json: <boost/property_tree/json_parser.happ>  使用read_json() 和 write_json() 读写配置
    ini: 不支持多级层次性,只有key和value形式     <.../ ini_parser.hpp>   使用read_ini() 和 write_ini() 读写配置
    info: <.../ info_parser.hpp>   使用read_info() 和 write_info() 读写配置


版权声明:本文为Vin1282023650原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。