在Python中更改XML值

2024-05-19 05:07:30 发布

您现在位置:Python中文网/ 问答频道 /正文

如果我有一个如下所示的XML文件,如何将版本从50更改为51?你知道吗

<?xml version="1.0" encoding="UTF-8"?>
<config>
    <updateCheck seconds="2" />
    <unturnedVersion version="50" />
    <unturnedFolder recoveryBundlesAfterUpdates="false" />
    <rocket useRocket="true" apikey=""/>
    <steam username="" password="" />
    <steamUpdates validate="true" />
    <servers rconEnabled="false">
        <server name="server1" rconPort="27013" rconPassword="pass" />
        <server name="server2" rconPort="27014" rconPassword="pass" />
    </servers>
    <notifyBefore seconds="60" />
</config>

我尝试了多种方法来实现它,有些方法什么都不做,或者它只是创建了一个新版本的unturnedVersion,代码底部有51。我只想把50改成51或者其他我设置的值。你知道吗

谢谢!你知道吗


Tags: 方法name版本configfalsetrueserverversion
1条回答
网友
1楼 · 发布于 2024-05-19 05:07:30

使用^{}。例如,通过find()定位元素,通过元素的^{} dictionary更新version属性:

import xml.etree.ElementTree as ET

data = """<?xml version="1.0" encoding="UTF-8"?>
<config>
    <updateCheck seconds="2" />
    <unturnedVersion version="50" />
    <unturnedFolder recoveryBundlesAfterUpdates="false" />
    <rocket useRocket="true" apikey=""/>
    <steam username="" password="" />
    <steamUpdates validate="true" />
    <servers rconEnabled="false">
        <server name="server1" rconPort="27013" rconPassword="pass" />
        <server name="server2" rconPort="27014" rconPassword="pass" />
    </servers>
    <notifyBefore seconds="60" />
</config>"""

root = ET.fromstring(data)
unturned_version = root.find("unturnedVersion")
unturned_version.attrib["version"] = "51"

print(ET.tostring(root))

印刷品:

<config>
    <updateCheck seconds="2" />
    <unturnedVersion version="51" />
    <unturnedFolder recoveryBundlesAfterUpdates="false" />
    <rocket apikey="" useRocket="true" />
    <steam password="" username="" />
    <steamUpdates validate="true" />
    <servers rconEnabled="false">
        <server name="server1" rconPassword="pass" rconPort="27013" />
        <server name="server2" rconPassword="pass" rconPort="27014" />
    </servers>
    <notifyBefore seconds="60" />
</config>

请注意,如果要增加现有版本,请使用:

unturned_version.attrib["version"] = str(int(unturned_version.attrib["version"]) + 1)

如果从文件中读取XML,请使用ET.parse()

import xml.etree.ElementTree as ET


tree = ET.parse("input.xml")
root = tree.getroot()
unturned_version = root.find("unturnedVersion")
unturned_version.attrib["version"] = str(int(unturned_version.attrib["version"]) + 1)

print(ET.tostring(root))

相关问题 更多 >

    热门问题