我使用boost属性树来编写一些不错的xml文件,一切正常......但我想以某种方式确保一个特定的块位于xml文件的开头。这个块是关于软件和一些常规设置的一般块,对于人类读者而言,这个块在一开始就是很好的。不幸的是,我不能确保这个块始终是第一个写的...是否有另一个简单的解决方案或解决方法?
答案 0 :(得分:1)
只需使用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>