这个问题已经在这里有一个答案:
- 添加xml样式表的处理指令,以提高property_tree 2个回答
我一直工作在一个XML读/写,我用升压的财产树这样做。
一切正常,只有一件事是在输出文件丢失:我想在文件的顶部添加两个标题标签。 眼下,只有头是这样的一个,由Boost的自动写入write_xml()
函数:
<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
不过,我想补充这两种下面的一个已经存在:
<!-- Custom stylesheet -->
<?xml-stylesheet type="text/xsl" href="browser_view.xslt"?>
<!-- Authentic View -->
<?xmlspysps authentic_view.sps?>
有谁知道我怎么能做到这一点,而不与升压产生之后编辑的文件?
这个词是“处理指令”。 我敢肯定你不能(他们为什么要推行呢?有毕竟没有加速XML库)。
双重检查后xml_writer_settings
确实是有什么控制的处理指令(否则你AVE抑制他们,而是印在整个序言自己)打印。
这是我对其采取与PugiXML:
#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
#include <iostream>
#include <pugixml.hpp>
int main() {
std::stringstream ss;
{
boost::property_tree::ptree pt;
pt.add("demo", "bla");
boost::property_tree::xml_parser::write_xml(ss, pt);
}
{
pugi::xml_document doc;
doc.load(ss);
auto pi = doc.prepend_child(pugi::xml_node_type::node_pi);
pi.set_name("xmlspysps");
pi.set_value("authentic_view.sps");
pi = doc.prepend_child(pugi::xml_node_type::node_pi);
pi.set_name("xml-stylesheet");
pi.set_value("type=\"text/xsl\" href=\"browser_view.xslt\"");
doc.save_file("test.xml");
}
}
保存:
<?xml version="1.0"?>
<?xml-stylesheet type="text/xsl" href="browser_view.xslt"?>
<?xmlspysps authentic_view.sps?>
<demo>bla</demo>
当然,这是效率极其低下的,如果你真的想只序列化ptree
-但显然你不只是序列化。 你标记后,在您需要的标记库,preferrably一个XML能够之一。