在Python中美化打印XML
在Python中,有哪些好的方法可以让XML格式的内容看起来更美观呢?
27 个回答
123
另一种解决方案是借用这个indent
函数,它可以和Python自带的ElementTree库一起使用,这个库从2.5版本开始就有了。下面是它的用法示例:
from xml.etree import ElementTree
def indent(elem, level=0):
i = "\n" + level*" "
j = "\n" + (level-1)*" "
if len(elem):
if not elem.text or not elem.text.strip():
elem.text = i + " "
if not elem.tail or not elem.tail.strip():
elem.tail = i
for subelem in elem:
indent(subelem, level+1)
if not elem.tail or not elem.tail.strip():
elem.tail = j
else:
if level and (not elem.tail or not elem.tail.strip()):
elem.tail = j
return elem
root = ElementTree.parse('/tmp/xmlfile').getroot()
indent(root)
ElementTree.dump(root)
195
lxml是一个比较新的库,更新也很频繁,它还包含了一个可以让代码输出更美观的功能。
import lxml.etree as etree
x = etree.parse("filename")
print etree.tostring(x, pretty_print=True)
你可以看看lxml的教程: https://lxml.de/tutorial.html
468
import xml.dom.minidom
dom = xml.dom.minidom.parse(xml_fname) # or xml.dom.minidom.parseString(xml_string)
pretty_xml_as_string = dom.toprettyxml()
当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。