Python3.7 ElementTree 操作 xml 时不排序属性
在对 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 中属性的顺序不受影响,再次写入就是读取是的顺序了。
如果有错误的地方,还望各位多多指点
写个博客,来记录自己成长的一些经历,或许也能顺便帮助他人。
由于使用GitHub仓库作为图床,会有图片显示不出来的情况。