boostpropertytree在循环中添加节点
boost property_tree adding nodes in a loop
如何在循环数组时将节点添加到属性树中?
这可能是一件简单的事情,但我不明白如何使用boost_property_tree。
我有一个值数组,我想将其添加到属性树中,并将其输出为xml。如果我对节点进行硬编码并手动将它们添加到根节点,这是有效的,但如果我尝试从循环内部执行,xml是无效的,只包含数组中的一个节点,并且没有任何xml节点终止。
它是一个可变长度的数据数组,因此不可能对节点进行硬编码。这样做根本不起作用。我不明白为什么?
ptree listnode;
std::vector<data> dataarray= ...
for(auto data : dataarray)
{
ptree node;
...
listnode.add_child("value", node)
}
...
我想要的是这样的东西:
<list>
<value active="true">12</value>
<value active="true">44</value>
<value active="true">23</value>
</list>
但是生成的xml看起来是这样的:
<list>
<value active="true">
它只是在第一个值节点之后停止。没有异常,所以我假设我的property_tree无效,或者它的xml_parser::write_xml无法创建xml。
很可能我误解了如何使用boost::property_tree。但实际上,输出列表一定是一件非常简单的事情吗?
在Coliru 上直播
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <iostream>
using namespace boost::property_tree;
int main() {
ptree pt;
auto& list = pt.add_child("list", ptree{});
for (auto data : { 12, 44, 23 })
list.add("value", data)
.add("<xmlattr>.active", true);
xml_parser::write_xml(std::cout, pt);
}
结果XML:
<?xml version="1.0" encoding="utf-8"?>
<list>
<value active="true">12</value>
<value active="true">44</value>
<value active="true">23</value>
</list>
相关文章:
- 将树节点添加到向量向量中的 n 元树遍历的平均和最坏情况时间复杂度是多少?
- 在单链表前面添加一个节点后,我无法遍历每个节点
- 如何使用LLVM C++API向保留节点列表添加
- 如何确保我的节点被添加到链接列表中
- 如何将节点添加到链表
- 在 C++ 中使用 temp 变量将节点添加到链表的末尾
- 想要以最新的添加节点完整返回树节点的根
- 在列表末尾添加节点
- 如何在提升property_tree前面添加节点
- C++ & cocos2dx -- 无法以编程方式添加节点
- 链接列表C 类,这两个添加节点实现之间的差异是什么?
- 最后在C++的链表中添加节点
- 在ITH位置添加节点
- 单链表在中间添加节点
- 添加节点时C++二叉搜索树状态访问冲突错误
- boostpropertytree在循环中添加节点
- 正在链接列表前面添加节点
- 向二叉搜索树添加节点
- 程序不读取和添加节点到2双链表c++
- 向链表中添加节点