用于XML字符串的Python pretty XML打印机

Python pretty XML printer for XML string

我用python生成了一个又长又难看的XML字符串,我需要通过漂亮的打印机过滤它以使其看起来更好。

我找到了这篇关于python-pretty打印机的文章,但是我必须将XML字符串写到一个文件中,以便重新读取以使用工具,如果可能的话,我希望避免使用这些工具。

在字符串上工作的python-pretty工具有哪些?


下面介绍如何从文本字符串解析为LXML结构化数据类型。

Python2:

1
2
3
4
from lxml import etree
xml_str ="<parent><child>text</child><child>other text</child></parent>"
root = etree.fromstring(xml_str)
print etree.tostring(root, pretty_print=True)

Python3:

1
2
3
4
from lxml import etree
xml_str ="<parent><child>text</child><child>other text</child></parent>"
root = etree.fromstring(xml_str)
print(etree.tostring(root, pretty_print=True).decode())

输出:

1
2
3
4
<parent>
  <child>text</child>
  <child>other text</child>
</parent>


我使用LXML库,在那里它非常简单

1
>>> print(etree.tostring(root, pretty_print=True))

您可以使用任何etree执行该操作,您可以通过编程方式生成该操作,也可以从文件中读取该操作。

如果您使用的是pyxml中的dom,那么

1
2
import xml.dom.ext
xml.dom.ext.PrettyPrint(doc)

除非指定备用流,否则将打印到标准输出。

http://pyxml.sourceforge.net/topics/howto/node19.html

要直接使用minidom,您需要使用toprettyxml()函数。

http://docs.python.org/library/xml.dom.minidom.html xml.dom.minidom.node.toprettyxml