我正在尝试使用boost::property_tree::read_xmlwrite_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/

10-11 18:45