Xml 没有缩进字符但有换行符

Xml without indent char but with new line

有没有一种方法可以使用 boost::property_tree 来编写 xml,不使用缩进字符但使用换行符?

考虑这段代码

using namespace boost::property_tree;
int main() {
    ptree tree;
    ptree* root = &tree.add("root", "");
    root->add("something", "yes");
    root->add("something2", "no");
    write_xml("test.xml", tree, std::locale(), xml_writer_settings<ptree::key_type>('\n', 0));
}

当indent_count设置为0时,我们得到这个格式

<?xml version="1.0" encoding="utf-8"?>
<root><something>yes</something><something2>no</something2></root>

我想要实现的是:

<?xml version="1.0" encoding="utf-8"?>
<root>
<something>yes</something>
<something2>no</something2>
</root>

有谁知道如何在不通过文件操作添加“\n”的情况下做到这一点? 我正在使用 boost 1_66.

看来你不能这样做。 看看:https://github.com/boostorg/property_tree/blob/d30ff9404bd6af5cc8922a177865e566f4846b19/include/boost/property_tree/detail/xml_parser_write.hpp#L76

bool want_pretty = settings.indent_count > 0;

然后,在第 101 行:

if (want_pretty)
     stream << Ch('\n');

因此,如果您想要换行分隔符,您必须在设置中设置一个或多个缩进字符。