Добавление поддеревьев с атрибутами xml в дерево свойств boost - PullRequest
0 голосов
/ 11 июня 2018

Я использую boost::ptree для создания XML-файла

ptree tree;
ptree & subtree = tree.add("sometag", "");
ptree & subsubtree = tree.add("someothertag", "");
...
write_xml(stfilename, declarationTree, std::locale(),
          xml_writer_settings<std::string>(' ', 4));

Это создает следующий XML-файл

<sometag>
   <someothertag>
   ...
   </someothertag>
</sometag>

Пока все хорошо, но мне нужно поместить атрибуты XMLв тег <sometag>.

Вместо этого:

<sometag>
  ...

Я хочу это:

<sometag someattribute="somevalue">
  ...

Как можно указать атрибуты?В документации буста об этом очень неясно.

1 Ответ

0 голосов
/ 11 июня 2018

Вы должны использовать <xmlattr> специальное пространство имен дочернего узла:

#include <boost/property_tree/xml_parser.hpp>
#include <iostream>

int main() {
    boost::property_tree::ptree tree;
    tree.put("sometag.someothertag.<xmlattr>.someattribute", "somevalue");

    write_xml(std::cout, tree,
            boost::property_tree::xml_writer_settings<std::string>(' ', 4));
}

Печать

<?xml version="1.0" encoding="utf-8"?>
<sometag>
    <someothertag someattribute="somevalue"/>
</sometag>
...