提升xml_parser以格式化空标记

时间:2018-03-19 03:22:55

标签: c++ boost

我尝试使用boost::property_tree::read_xmlwrite_xml从xml文件中复制并生成具有相同内容的新xml文件。我发现的问题是这个write_xml函数总是生成不需要的空标记。例如,如果原始内容是:

<a></a>

输出将变为:

<a/>

所以我可以更改boost::property_tree::xml_writer_settings以避免空标记。

提前致谢。

1 个答案:

答案 0 :(得分:1)

您可以查看图书馆的来源。我比较了两个版本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/>