如何手动创建具有 XML 属性的 boost ptree?
How to manually create a boost ptree with XML attributes?
我一直在使用 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"
?
您使用 "fake" 节点 <xmlattr>
: http://www.boost.org/doc/libs/1_46_1/doc/html/boost_propertytree/parsers.html#boost_propertytree.parsers.xml_parser
#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 库来解析 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"
?
您使用 "fake" 节点 <xmlattr>
: http://www.boost.org/doc/libs/1_46_1/doc/html/boost_propertytree/parsers.html#boost_propertytree.parsers.xml_parser
#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>