如果这些子节点本身有子节点,如何迭代 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&lt;std::string&gt;("&lt;xmlattr&gt;.type")。除了我弄错了 xmlattr 问题,避免我得到的编译器错误的方法是使用模板语法。

【讨论】:

以上是关于如果这些子节点本身有子节点,如何迭代 boost::propertytree 中的子节点?的主要内容,如果未能解决你的问题,请参考以下文章

按钮元素可以有子节点吗?

ztree要怎么判断该节点下面是不是有子节点

C#判断xml节点下是不是有子节点

ztree判断父节点下是不是有子节点?

ztree要怎么判断该节点下面是不是有子节点

怎么判断xml根节点下面是不是中有子节点(是元素节点)