boost::property_tree 改变元素的顺序
boost::property_tree change order of elements
我使用 boost 属性 树写了一些不错的 xml 文件并且一切正常......但我想以某种方式确保一个特定的块位于 xml 文件。这个块是关于软件和一些常规设置的通用块,如果这个块位于开头,对人类读者来说会很好。不幸的是,我不能确定这个块总是第一个被写入的......还有其他简单的解决方案或解决方法吗?
只需使用 insert
:
ptree pt;
pt.add("a.c.d", "hello");
pt.add("a.e", "world");
pt.add("a.b", "bye");
write_xml(std::cout, pt, boost::property_tree::xml_writer_make_settings<std::string>(' ', 2));
版画
<?xml version="1.0" encoding="utf-8"?>
<a>
<c>
<d>hello</d>
</c>
<e>world</e>
<b>bye</b>
</a>
使用insert
在特定位置插入节点:
// let's move `b` to the start:
ptree pt;
pt.add("a.c.d", "hello");
pt.add("a.e", "world");
auto& a = pt.get_child("a");
a.insert(a.begin(), {"b", ptree{"bye"}});
write_xml(std::cout, pt, boost::property_tree::xml_writer_make_settings<std::string>(' ', 2));
版画
<?xml version="1.0" encoding="utf-8"?>
<a>
<b>bye</b>
<c>
<d>hello</d>
</c>
<e>world</e>
</a>
我使用 boost 属性 树写了一些不错的 xml 文件并且一切正常......但我想以某种方式确保一个特定的块位于 xml 文件。这个块是关于软件和一些常规设置的通用块,如果这个块位于开头,对人类读者来说会很好。不幸的是,我不能确定这个块总是第一个被写入的......还有其他简单的解决方案或解决方法吗?
只需使用 insert
:
ptree pt;
pt.add("a.c.d", "hello");
pt.add("a.e", "world");
pt.add("a.b", "bye");
write_xml(std::cout, pt, boost::property_tree::xml_writer_make_settings<std::string>(' ', 2));
版画
<?xml version="1.0" encoding="utf-8"?>
<a>
<c>
<d>hello</d>
</c>
<e>world</e>
<b>bye</b>
</a>
使用insert
在特定位置插入节点:
// let's move `b` to the start:
ptree pt;
pt.add("a.c.d", "hello");
pt.add("a.e", "world");
auto& a = pt.get_child("a");
a.insert(a.begin(), {"b", ptree{"bye"}});
write_xml(std::cout, pt, boost::property_tree::xml_writer_make_settings<std::string>(' ', 2));
版画
<?xml version="1.0" encoding="utf-8"?>
<a>
<b>bye</b>
<c>
<d>hello</d>
</c>
<e>world</e>
</a>