2015-07-22 2 views
3

Я использую библиотеки boost для анализа XML-файлов, и мне нужно создать ptree вручную. Мне нужно добавить атрибут XML в ptree. Это то, что документация подталкивание предлагает:Как вручную создать boost ptree с атрибутами XML?

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"?

ответ

5

Вы используете "фальшивый" узел <xmlattr>: 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> 
+0

Спасибо вам большое :) –

+0

Обратите внимание на ссылку документации :) Документация по увеличению часто бывает кратким, bu t пациента. – sehe