如何在Python中订购xml元素属性?

时间:2011-03-21 17:25:21

标签: python xml elementtree

将xml文件解析为Python ElementTree时,属性的顺序会混淆,因为Python将属性存储在字典中。

如何更改字典中属性的顺序?

4 个答案:

答案 0 :(得分:6)

根据定义,XML属性是无序的 1 ,比较官方标准的paragraph 3.1

1 从技术上讲,属性列表是有序的,但顺序并不重要,即编写者,变换器和解析器可以随意切换它们。

答案 1 :(得分:2)

你的自我答案就像你说的那么漫长而繁琐。它不需要。如果(1)有超过10个键(2),则dict的键数少于预期,它也会失败。

试试这个;它更简单:

>>> ordered_keys = ('z', 'y', 'e', 'x', 'w') # possible keys, in desired order

注意:以上行是所有必需的设置。

>>> dic = {'z':'a', 'y':'b', 'x':'c', 'w':'d'} # actual contents of a dictionary
>>> for k in ordered_keys:
...     if k in dic: # avoid trouble if a key is missing
...         print k, dic[k]
...
z a
y b
x c
w d
>>>

答案 2 :(得分:0)

XML没有定义节点属性的任何排序。所以行为很好。 如果您对属性的排序做出假设,那么您的假设是错误的。 没有排序,你不能指望任何类型的属性排序。所以你的问题无效。

答案 3 :(得分:0)

您无法在字典内部更改属性的顺序。除非你做一些花哨的黑客攻击,否则这是不可能的。

因此,解决方案是按照您希望的顺序手动访问属性,或创建键/项列表并按照您希望的方式排序。