在对 xml 文件内数据做等比例缩放时,之前排好的属性顺序在写入时会被 ElementTree 按照字母顺序排序,造成预期外的修改,所以修改 ElementTree.py 的源码进行干预修改。
将代码修改为
修改 ElementTree 源码的方法 _serialize_xml 中的函数内包含了节点属性Key的排序,修改对属性排序的源代码就OK了,参考如下:
本文中版本为 python3.7。
在命令行中使用
where python
目录查找 python 安装目录
我安装的目录为
C:\Python37\python.exe
进入
C:\Python37\
目录,依次进入
Lib\xml\etree
目录,使用文本编辑器打开
ElementTree.py
找到
_serialize_xml
函数,
在代码中找到
for k, v in sorted(items):
并替换为
for k, v in items:
代码在 L928:红框代码替换为黄框的代码
保存后再运行,xml 中属性的顺序不受影响,再次写入就是读取是的顺序了。