繁体   English   中英

Python/XML:漂亮的打印 ElementTree

[英]Python/XML: Pretty-printing ElementTree

我使用ElementTree XML API构造 XML,我希望能够漂亮地打印

  • 单个节点(用于检查)以及
  • 整个文件(到一个文件,以备将来检查)。

我可以使用ET.write()将我的 XML 写入文件,然后使用在 Python中的漂亮打印 XML 中的许多建议漂亮地打印它。 但是,这需要我序列化然后反序列化 XML(到磁盘或到StringIO )只是为了再次漂亮地序列化它 - 这显然是次优的。

那么,有没有办法漂亮地打印xml.etree.ElementTree

我在使用漂亮的印刷品时遇到了问题。 深入研究它,我找到了以下对我有用的解决方案。

import xml.etree.cElementTree as etree
from xml.dom import minidom

root = etree.Element("root")
animal = etree.SubElement(root, "animal")
etree.SubElement(animal, "pet").text = "dog"

xmlstr = 
minidom.parseString(etree.toString(root)).toprettyxml(indent = "   ")
print (xmlstr)

以 XML 格式返回结果

正如文档所说,在write方法中:

file是文件名,或为写入而打开的文件对象。

这包括一个StringIO对象。 所以:

outfile = cStringIO.StringIO()
tree.write(of)

然后,你可以漂亮地打印outfile使用您喜欢的方法,只是outfile.seek(0)然后通过outfile本身,需要一个文件中的函数,或通过outfile.getvalue()给带有字符串的函数。


但是,请注意,在您链接的问题中,许多漂亮地打印 XML 的方法甚至不需要这样做。 例如:

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM