保留 XML 属性顺序?
Posted
技术标签:
【中文标题】保留 XML 属性顺序?【英文标题】:Preserving XML attribute order? 【发布时间】:2022-01-15 13:52:16 【问题描述】:我知道过去有人问过这个问题,但它们都是几年前提出的。我想知道是否对 Python 模块(例如 lxml、minidom 或 etree)进行了任何更改,这将允许我们在不打补丁的情况下保留 XML 文件中的属性顺序。
我需要保留订单,因为我提供文件的程序依赖它。
如果没有更新,最简单的实现方法是什么?
【问题讨论】:
如果您提供文件的程序依赖于属性的顺序,那么该程序有一个应该修复的错误。 不幸的是,该程序是外部的,所以我对此无能为力。并且属性是数据非常相关的子元素的一部分。 您可以使用OrderedDict
来保留带有lxml 的属性顺序。见***.com/a/22596064/407651
除了@mzjn 的答案/评论:这个答案可能也很有趣:***.com/a/54034770/960592
@Ideogram:Python 3.8 中的 ElementTree 和 minidom 保留属性顺序:***.com/a/60176826/407651、***.com/a/61267614/407651
【参考方案1】:
属性排序的重要性不是在 XML 库的未来实现中要取消的技术限制。
Attribute order is insignificant 每XML Recommendation:
请注意,开始标签中属性规范的顺序或 空元素标签不重要。
因此,您的设计不应基于 XML 中属性的任何特定顺序。
在极少数情况下,应用程序必须对 XML 属性进行排序,请参阅 XML Normalization Recommendation 或 Canonical XML Recommendation 中的 section on attribute processing。
【讨论】:
与库处理属性的方式一致:它们返回一个字典。 嘿,感谢您的链接和答案。不幸的是,我提供给它的程序不是我的,而且它是专有的。这正是我想知道这是否可能的原因。我确实了解 xml 协议及其存储方式。但我只是想知道这个选项是否被实施,考虑到这个问题已经被问了好几次了。以上是关于保留 XML 属性顺序?的主要内容,如果未能解决你的问题,请参考以下文章