如何在Python中排序XML元素属性?
当把一个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
>>>