修改xml配置文件的属性时,属性的顺序正在更改。
Before modifying xml: <connection user="testing" intervalInSeconds="50" versionUpdates="10" />
After modifying xml: <connection intervalInSeconds="50" user="testing" versionUpdates="10" />
如何在python 3中保留属性的顺序?
代码:
import xml.etree.ElementTree as ET
tree = ET.parse('file path')
root = tree.getroot()
# modifying an attribute
for elem in root.iter('connection'):
elem.set('versionUpdates', '10')
tree.write('file path', encoding="UTF-8", xml_declaration = True)
答案 0 :(得分:0)
按以下方式进行操作可以保持顺序-不知道为什么不按自己的方式进行操作
mystr = """
<connection user="testing" intervalInSeconds="50" versionUpdates="10" />
"""
from lxml import etree
root = etree.fromstring(mystr)
for elem in root.iter('connection'):
elem.set('versionUpdates', '20') #note: I changed it to '20', just to check
print(etree.tostring(root, pretty_print=True))
输出:
b'<connection user="testing" intervalInSeconds="50" versionUpdates="20"/>\n'
因此实现了修改,但保持了顺序。不确定是否可以帮助您解决特定情况,但这可能是一个选择。