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 中属性的顺序不受影响,再次写入就是读取是的顺序了。

posted @ 2022-09-19 14:42  叫夏洛啊  阅读(273)  评论(0编辑  收藏  举报