在修改xml配置文件中的值时如何保留属性的顺序?

时间:2019-05-26 03:12:29

标签: xml python-3.x xml-parsing

修改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)

1 个答案:

答案 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'

因此实现了修改,但保持了顺序。不确定是否可以帮助您解决特定情况,但这可能是一个选择。