boost::property_tree如何进行XML的美化打印和格式化。

3
我将遵循五分钟教程,并获得输出文件debug_settings_out.xml(不出所料)。
但我的问题是,它没有很好的格式。它看起来像这样:
<?xml version="1.0" encoding="utf-8"?>
<debug><filename>debug.log</filename><level>2</level></debug>

我希望它看起来像这样:

<?xml version="1.0" encoding="utf-8"?>
<debug>
    <filename>debug.log</filename>
    <level>2</level>
</debug>

因为它还应该可以手动编辑。我该如何实现这一点?我已经找到了可以传递给解析器的设置,但其中没有一个能给我想要的行为。
1个回答

7

谢谢。你能解释一下或者告诉我在哪里可以找到解释,(' ', 4) 是什么意思吗?还有其他的选项吗? - Rico-E
1
第一个参数是缩进字符,唯一的其他合理选择是 '\t' 表示制表符。第二个参数是每个缩进要重复多少次该字符。没有其他选项。 - Sebastian Redl
2
如果有其他人来到这里,而且无法使其工作:当写入流而不是文件时,没有区域设置参数。也就是说,这个可以工作:write_xml(std::cout, tree, xml_writer_make_settings(' ', 4)); - Darren Cook
有没有可能你能写出编译器/链接器设置,以便使用这个xml_writer_make_settings?即使我在代码的其他地方使用了ptree,但我仍然得到“未在此范围内声明”的错误提示。 - serup
如果我没有将<type>模板参数传递给xml_writer_make_settings,那么编译会失败:xml_parser_writer_settings.hpp:55:30: note: candidate template ignored: couldn't infer template argument 'Str' - qris
1
这可能有点老了,但如果有人在这里寻找解决方案,我发现直接使用xml_writer_make_settings创建的类可以成功,如下所示: write_xml(stream, tree, xml_parser::xml_writer_settingsstd::string(' ', 4)); 模板类型说明符似乎是必需的。(property_tree作用域也是如此。) - Foster Boondoggle

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接