使用minidom进行修改时保留属性的顺序

Fre*_*ick 11 python xml minidom

有没有办法在使用minidom处理XML时保留属性的原始顺序?

说我有:<color red="255" green="255" blue="233" /> 当我用minidom修改它时,属性按字母顺序重新排列为蓝色,绿色和红色.我想保留原始订单.

我通过循环返回的元素处理文件elements = doc.getElementsByTagName('color')然后我做这样的分配e.attributes["red"].value = "233".

小智 10

为了保持属性顺序,我在minidom中稍作修改:

from collections import OrderedDict
Run Code Online (Sandbox Code Playgroud)

在Element类中:

__init__(...)
    self._attrs = OrderedDict()
    #self._attrs = {}
writexml(...)
    #a_names.sort()
Run Code Online (Sandbox Code Playgroud)

现在这只适用于Python 2.7+并且我不确定它是否真的有效=>使用风险......

请注意,您不应该依赖属性顺序:

请注意,start-tag或empty-element标记中的属性规范的顺序并不重要.


bob*_*nce 8

有没有办法在使用minidom处理XML时保留属性的原始顺序?

使用minidom no时,用于存储属性的数据类型是无序字典.pxdom可以做到这一点,虽然速度相当慢.