【问题标题】:Does boost::property_tree::xml_parser::read_xml preserve the order?boost::property_tree::xml_parser::read_xml 是否保留顺序?
【发布时间】:2020-02-27 14:53:30
【问题描述】:

考虑以下 xml 元素:

<elem>
    <sub_elem name="first">
    <sub_elem name="second">
</elem>

关于由 boost::property_tree::xml_parser::read_xml 填充的属性树,是否保证 sub_elem "first" 将在 sub_elem "second" 之前?

documentation 声明:

从输入流中读取 XML 并将其翻译到属性树。

但这取决于“翻译”的确切含义。

【问题讨论】:

  • 据我所知,XML 标准中没有指定元素的顺序,因此您不应该依赖它。

标签: c++ xml parsing tree boost-propertytree


【解决方案1】:

来自属性树文档:https://www.boost.org/doc/libs/1_65_1/doc/html/property_tree/container.html 我推断 XML 文件中元素的顺序是保留的

记住属性序列不是很重要的 按键排序。 它保留插入顺序。它密切 类似于 std::list。通过姓名快速访问儿童 一个单独的查找结构。不要尝试使用算法 期望节点的子节点上的有序序列(如 binary_search)。

查看https://www.boost.org/doc/libs/1_51_0/boost/property_tree/detail/xml_parser_read_rapidxml.hpp 中的内部代码可能会看到遍历节点和push_back 调用。它确实应该以最简单的方式保持秩序。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2014-10-23
    • 2011-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-10-14
    • 2017-03-04
    • 1970-01-01
    相关资源
    最近更新 更多