在XML输出中不要合并空节点
我正在使用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>