python使用xml.dom.minidom写xml节点属性会自动排序问题解决
1.背景及问题
一个xml文件,过滤掉部分节点,生成新的xml文件,但是生成后,发现节点的属性顺序变化了,根据key的字母信息排了序。如原始信息:
<string typename="time_type" length="8"/>
重新生成后的信息:
<string length="8" typename="date_type"/>
虽然不影响读取,但是变更了设定的顺序规则。
2.解决方案
在pythonlib库路径:C:\Users\USER\AppData\Local\Programs\Python\Python37-32\Lib\xml\dom 找到python文件minidom.py,将如下源码修改,修改前
attrs = self._get_attributes() a_names = sorted(attrs.keys())
sorted即为排序代码,删除即可,修改后:
attrs = self._get_attributes() a_names = attrs.keys()
删除 __pycache__ 目录,重新执行脚本,生成xml即为原始顺序的属性内容。