在XML输出中不要合并空节点

3 投票
2 回答
1345 浏览
提问于 2025-04-18 05:25

我正在使用Python的xml.etree.ElementTree来表示一个XML文档。我想把它输出成文本,但我希望保持空元素(没有子元素的元素)展开,而不是折叠。比如,我想要这样的输出:

<element></element>

而不是这样的:

<element />

我现在使用的是ElementTree.tostring,但我愿意使用其他任何内置的Python模块或函数来序列化这个文档,只要我能比较容易地使用ElementTree对象就行。

顺便说一下,我想保持元素展开的原因是,我想更方便地将输出与一个第三方程序的输出进行比较,而那个程序不会折叠空元素。

2 个回答

5

只需要使用:ElementTree.tostring(element, short_empty_elements=False)

6

你可以在调用 tostring() 的时候,传入 method="html" 这个参数。

示例:

>>> import xml.etree.ElementTree as etree
>>> data = """
... <root>
...     <person/>
...     <person></person>
... </root>
... """
>>> tree = etree.fromstring(data)
>>> print etree.tostring(tree, method="html")
<root>
    <person></person>
    <person></person>
</root>

撰写回答