c++ - boost 属性树 xml 编写器输出中没有行尾

标签 c++ xml boost boost-propertytree

考虑以下使用 boost::property_tree 的代码:

#include <boost/property_tree/ptree.hpp>
#include <boost/property_tree/xml_parser.hpp>
using namespace boost::property_tree;

int main() {
    ptree model_tree;
    model_tree.add("calibrated", "true");
    model_tree.add("model.<xmlattr>.label", "label");
    model_tree.add("model.activity.<xmlattr>.type", "fixed");
    write_xml("test.xml", model_tree);
}

通过编译和执行程序,我得到以下输出:

<?xml version="1.0" encoding="utf-8"?>
<calibrated>true</calibrated><model label="label"><activity type="fixed"/></model>

这不是我所期望的,因为没有换行也没有缩进。我想得到以下内容:

<?xml version="1.0" encoding="utf-8"?>
<calibrated>true</calibrated>
<model label="label">
    <activity type="fixed"/>
</model>

这是一个错误,还是有获得后者输出的选项?任何帮助将不胜感激。

P.S.:我使用的是 Ubuntu 12.04 LTS,gcc 4.6.3 和 boost 1.48。

最佳答案

与此同时,我找到了答案。应该使用 xml_writer_settings,即:

xml_writer_settings<char> settings(' ', 4);
write_xml("test.xml", model_tree, std::locale(), settings);

构造函数中的第一个参数是用于缩进的字符,第二个参数是缩进长度。由于解决方案未记录,希望这能帮助其他面临类似问题的人。

关于c++ - boost 属性树 xml 编写器输出中没有行尾,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20304701/

相关文章:

c++ - 为什么在定义默认值时 boost::program_options 抛出有关必需参数的错误

C++ 非静态成员引用

css - XSLT与CSS显示XML

java - 通过 AS1 或 AS2 或 AS3 协议(protocol)将 EDI 或 XML 文档从一台机器传输到另一台机器

c++ - 错误:使用 boost::serialization 与 'operator<<' 不匹配

c++ - boost - 添加到 'corecrt.h' 的路径

c++ - 通过 C API 提供 QWidget 的 DLL

c++ - 问题将对象插入 vector

c++ - 具有默认类型的可变参数模板

xml - 如何在 Go 中构建三层 xml