如何在Python中排序XML元素属性?

2 投票
4 回答
4523 浏览
提问于 2025-04-16 14:07

当把一个xml文件解析成Python的ElementTree时,属性的顺序会乱掉,因为Python把属性存储在一个字典里。

我该如何改变字典中属性的顺序呢?

4 个回答

0

XML并没有规定节点属性的顺序,所以这样的行为是正常的。如果你对属性的顺序有任何假设,那你就错了。属性是没有顺序的,你不能期待属性会按照某种特定的顺序排列。因此,你的问题是不成立的。

6

XML的属性本身是没有顺序的1,你可以参考官方标准的第3.1段

1从技术上讲,属性列表是有顺序的,但这个顺序并不重要,也就是说,写代码的人、转换工具和解析器可以随意调整这个顺序。

2

你自己给出的答案确实有点长,而且复杂。其实没必要这么麻烦。而且如果出现以下情况,这个方法就会出错:(1) 键的数量超过10个,(2) 字典里的键比预期的少。

试试这个方法;它简单多了:

>>> 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
>>>

撰写回答