Python ElementTree – 如何编辑 XML 文件并将某些标签保持为自关闭?

问题描述 投票:0回答:1

我正在使用 ElementTree 在 Python 3.10 中编辑 XML 文件。

我需要某些空元素来使用自关闭标签,即

<a/>
,而其他元素则需要完整写出
<b></b>
。 (对我来说)不清楚是什么决定是否使用空元素标签。

这是因为我正在编辑由旧游戏与 bin 文件相互转换的 XML 文件,如果格式不完全符合预期,则转换回 bin 将会失败。

python xml elementtree
1个回答
0
投票

没有文字的标签将自动关闭。

import xml.etree.ElementTree as ET

xml_sample="""
<root>
    <header>
        <ordernum>1234</ordernum>
        <customer></customer>
        <line>
            <empty_first />
            <lineno>1</lineno>
            <reqdat>2024-01-01</reqdat>
        </line>
    </header>
</root>"""

root = ET.fromstring(xml_sample)

for elem in root.iter():
    if elem.tag == "empty_first":
        elem.text = "somewhat"

ET.dump(root)

root.find(".//empty_first").text = ''

ET.dump(root)

输出:

<root>
    <header>
        <ordernum>1234</ordernum>
        <customer />
        <line>
            <empty_first>somewhat</empty_first>
            <lineno>1</lineno>
            <reqdat>2024-01-01</reqdat>
        </line>
    </header>
</root>
<root>
    <header>
        <ordernum>1234</ordernum>
        <customer />
        <line>
            <empty_first />
            <lineno>1</lineno>
            <reqdat>2024-01-01</reqdat>
        </line>
    </header>
</root>
© www.soinside.com 2019 - 2024. All rights reserved.