我正在尝试使用boost::property_tree::read_xml
和write_xml
从xml文件复制并生成具有相同内容的新xml文件。我发现的问题是此write_xml
函数总是生成不需要的空标记。例如,如果原始内容是:
<a></a>
输出将变为:
<a/>
所以我可以更改
boost::property_tree::xml_writer_settings
以避免空标签。提前致谢。
最佳答案
您可以检查库的来源。我比较了两个版本1.47和1.66,两者的实现是相同的,看起来如下
// Write element
if (pt.data().empty() && pt.empty()) // Empty key
{
if (indent >= 0)
{
write_xml_indent(stream,indent,settings);
stream << Ch('<') << key <<
Ch('/') << Ch('>');
if (want_pretty)
stream << Ch('\n');
}
}
else // Nonempty key
因此答案是否定的,使用
xml_writer_settings
不能更改写入空标签的格式,始终为<KEY/>
。关于c++ - Boost xml_parser格式化空标签,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/49355356/