boost ptree:添加更多具有相同名称和属性的节点

boost ptree: Adding more nodes with same name and attributes

本文关键字:属性 节点 ptree 添加 boost      更新时间:2023-10-16

我试图写一个xml与更多的节点和属性相同的名称如下:

<ParameterSet>
    <ParameterSetType Name="AAAA">
    </ParameterSetType>
    <ParameterSetType Name="BBBB"> 
    </ParameterSetType>
    <ParameterSetType Name="CCCC">
    </ParameterSetType>
</ParameterSet>

我试图使用pt.put()获取最后一个元素

<ParameterSet>
    <ParameterSetType Name="CCCC">
    </ParameterSetType>
</ParameterSet>

pt.add()获得一个具有所有属性的节点

<ParameterSet>
    <ParameterSetType Name="AAAA" Name="BBBB" Name="CCCC">
    </ParameterSetType>
</ParameterSet>

做我想做的事情的正确方法是什么?

根据属性树文档pt.add()绝对是正确的函数使用:

template<typename Type>    self_type & add(const path_type & path, const Type & value); 

如果路径标识的节点不存在,创建该节点;包括所有失踪的父母。如果节点已经存在,请添加具有相同键的兄弟。将新创建节点的值设置为给定的参数,使用提供的翻译器进行翻译。

再次引用本教程中的文档,给出以下将std::列表中的字符串添加到属性树的示例:

BOOST_FOREACH(const std::string &name, m_modules)
      pt.add("debug.modules.module", name);

结果如下:

<debug>
   <modules>
        <module>Finance</module>
        <module>Admin</module>
        <module>HR</module>
    </modules>
</debug>