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