在Python中美化打印XML

536 投票
27 回答
560563 浏览
提问于 2025-04-15 11:07

在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()

当然可以!请把你想要翻译的内容发给我,我会帮你用简单易懂的语言解释清楚。

撰写回答