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

时间:2013-04-18 14:48:52

标签: c++

我正在尝试编写一个包含更多节点和属性的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>

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

1 个答案:

答案 0 :(得分:3)

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

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

如果路径标识的节点不存在,请创建它,   包括所有失踪的父母。如果节点已存在,请添加   兄弟用同样的钥匙。将新创建的节点的值设置为   给定的参数,用提供的翻译器翻译。

这次再次引用文档从教程中给出了以下将std :: list中的字符串添加到属性树的示例:

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>