使用boost/property_tree进行XML操作

      之前一直用tinyxml来进行XML文件操作,刚刚接触的一个测试项目是使用boost操作的,虽然不清楚这两者的差异,但boost使用起来还挺方便的,所以简单整理一些关于boost解析和创建XML文件的的操作方法,如果有错误欢迎指正。

      首先,简单介绍一下怎么安装boost_1_55_0,我是安装在D盘上的。

      运行cmd.exe:

      C:\Users\Administrator>D:

      D:\>cd  D:boost_1_55_0

      D:\boost_1_55_0>bootstrap.bat

      ( 执行完会在boost_1_55_0下生成一个bjam.exe文件。)

      D:\boost_1_55_0>bjam.exe

      ( 此过程将默认根据系统安排好的编译工具来编译相应的lib文件和头文件,时间会略久些。)

      当控制台出现 D:boost_1_55_0> 时,我们就完成了boost库的安装。

     

      其次,关于属性配置:

      VC++目录 -> 包含目录 -> D:\boost_1_55_0

                         库目录 -> D:\boost_1_55_0\stage\lib

      C++ -> 常规 -> 附加包含目录 -> D:\boost_1_55_0

      连接器 -> 常规 -> 附加库目录 -> D:\boost_1_55_0\stage\lib

               -> 输入-> 附加依赖项 -> libboost_signals-vc120-mt-gd-1_55.lib

                                                 libboost_regex-vc120-mt-gd-1_55.lib

 

      下面通过一个小demo来具体操作:将下面这个名为MyXML.xml的文件内容解析出来,并将解析结果自动的重新写回到另外一个名为AutoCreateXML.xml的文件中。

      

 

      配置属性 -> 调试 -> 命令参数 -> MyXML.xml

      接下来开始编写代码。

      这个程序已经编译通过并得到预期结果。下面关于程序做几点说明:

      1).boost::property_tree::xml_writer_settings<char>settings('\t', 1);

          boost::property_tree::xml_parser::write_xml(xmlOutputString, datum, std::locale(), settings);

          通过settings使输出格式更加规范化,注意xmlOutputString必须为string型。

       2).与tinyxml不同,ptree是先定义子节点信息,最后添加父节点。

       3).xml文件中的文字部分若加双引号,则解析出来会添加一个&quoc的符号,具体原因我也不清楚,在实际应用时注意尽量避免文字部分加双引号就好了。

 

posted @ 2016-07-27 22:43  小小濛  阅读(4545)  评论(1编辑  收藏  举报