Добавление поддеревьев с атрибутами xml в дерево свойств boost
Я использую 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 ответ
Вы должны использовать <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>