不要折叠XML输出中的空节点

时间:2014-05-05 14:34:41

标签: python xml xml.etree

我正在使用python的xml.etree.ElementTree来表示XML文档。我想将它输出到文本但我想保持空元素(没有子元素的元素)展开,而不是折叠。例如,我想要这个:

<element></element>

而不是:

<element />

我目前正在使用ElementTree.tostring,但我愿意使用任何其他内置的python模块或函数来序列化文档,只要我可以很容易地使用它的ElementTree对象。 / p>

仅供参考,我想保持元素扩展的原因是因为我希望更容易将输出与第三方程序的输出区分开来,而第三方程序不会折叠空元素。

2 个答案:

答案 0 :(得分:5)

您可以将method="html"传递给tostring()来电。

演示:

>>> 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>

答案 1 :(得分:3)

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