我正在使用 ElementTree 在 Python 3.10 中编辑 XML 文件。
我需要某些空元素来使用自关闭标签,即
<a/>
,而其他元素则需要完整写出 <b></b>
。 (对我来说)不清楚是什么决定是否使用空元素标签。
这是因为我正在编辑由旧游戏与 bin 文件相互转换的 XML 文件,如果格式不完全符合预期,则转换回 bin 将会失败。
没有文字的标签将自动关闭。
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>