如果这些子节点本身有子节点,如何迭代 boost::propertytree 中的子节点?
Posted
技术标签:
【中文标题】如果这些子节点本身有子节点,如何迭代 boost::propertytree 中的子节点?【英文标题】:How to iterate over childnodes in boost::propertytree, if these have childs itself? 【发布时间】:2011-11-14 11:42:14 【问题描述】:我从一个 XML 文件加载了一个 boost::property_tree::ptree,它看起来有点像这样:
<bla>
<foo>
<element id="1" type="..." path="..."/>
<element id="2" type="..." path="..."/>
<element id="3" type="..." path="..."/>
<otherelement/>
</foo>
</bla>
我使用 read_xml 将其加载到属性树中。现在我想构建一个包含结构的向量,类似于element
-tags。我可以做到以下几点:
BOOST_FOREACH(ptree::value_type& node, tree.get_child("bla.foo"))
if (node.first == "element")
...
到目前为止还不错,但是我在获取元素中的数据时遇到了问题。 node.second
应该包含它,但我如何正确访问它? node.second.get("xmlattr.type")
不工作。
【问题讨论】:
【参考方案1】:正确使用Google-Fu后,我自己在this blogentry找到了答案。正确的方法是node.second.get<std::string>("<xmlattr>.type")
。除了我弄错了 xmlattr 问题,避免我得到的编译器错误的方法是使用模板语法。
【讨论】:
以上是关于如果这些子节点本身有子节点,如何迭代 boost::propertytree 中的子节点?的主要内容,如果未能解决你的问题,请参考以下文章