【问题标题】:How to manually create a boost ptree with XML attributes?如何手动创建具有 XML 属性的 boost ptree?
【发布时间】:2015-07-22 16:51:49
【问题描述】:

我一直在使用 boost 库来解析 XML 文件,我必须手动创建一个 ptree。我需要向 ptree 添加一个 XML 属性。这是 boost 文档的建议:

ptree pt;
pt.push_back(ptree::value_type("pi", ptree("3.14159")));

这添加了一个带有内容的元素,但我还需要为该元素添加一个属性。

上面的代码产生:

<pi>3.14</pi>

我需要添加如下内容:

<pi id="pi_0">3.14</pi> 

我需要改变什么,添加属性id="pi_0"

【问题讨论】:

    标签: c++ xml boost boost-propertytree


    【解决方案1】:

    你使用“假”节点&lt;xmlattr&gt;:http://www.boost.org/doc/libs/1_46_1/doc/html/boost_propertytree/parsers.html#boost_propertytree.parsers.xml_parser

    Live On Coliru

    #include <boost/property_tree/ptree.hpp>
    #include <boost/property_tree/xml_parser.hpp>
    #include <iostream>
    
    using boost::property_tree::ptree;
    
    int main() {
    
        ptree pt;
        pt.push_back(ptree::value_type("pi", ptree("3.14159")));
        pt.put("pi.<xmlattr>.id", "pi_0");
    
        write_xml(std::cout, pt);
    }
    

    打印

    <?xml version="1.0" encoding="utf-8"?>
    <pi id="pi_0">3.14159</pi>
    

    【讨论】:

    • 注意文档链接 :) Boost 文档通常很简洁,但很有耐心。
    猜你喜欢
    • 2018-04-10
    • 1970-01-01
    • 2011-10-03
    • 1970-01-01
    • 2020-02-02
    • 2012-09-13
    • 1970-01-01
    • 2023-03-19
    • 2013-09-15
    相关资源
    最近更新 更多