Как перебрать дочерние узлы в boost :: propertytree, если у них есть дочерние узлы? - PullRequest
2 голосов
/ 14 ноября 2011

Я загружаю boost :: property_tree :: ptree из XML-файла, который выглядит примерно так:

<bla>
   <foo>
       <element id="1" type="..." path="..."/>
       <element id="2" type="..." path="..."/>
       <element id="3" type="..." path="..."/>
       <otherelement/>
   </foo>
</bla>

Я загружаю это в дерево свойств с помощью read_xml.Теперь я хочу построить вектор, содержащий структуры, которые напоминают теги element.Я могу сделать следующее:

BOOST_FOREACH(ptree::value_type& node, tree.get_child("bla.foo"))
{
    if (node.first == "element")
    {
                 ...
    }
}

Пока это хорошо, но у меня есть проблемы с получением данных в элементе.node.second должен содержать это, но как мне получить к нему правильный доступ?node.second.get("xmlattr.type") не работает.

1 Ответ

0 голосов
/ 14 ноября 2011

После правильного использования Google-Fu я нашел ответ сам в этом блогерстве . Правильный путь - node.second.get<std::string>("<xmlattr>.type"). За исключением того, что я неправильно понял xmlattr, я могу избежать ошибки компилятора, используя синтаксис шаблона.

...