Impresora XML bonita de Python para cadena XML

Genero una cadena XML larga y fea con python, y necesito filtrarla a través de una impresora bonita para ver mejor.

Encontré esta publicación para impresoras bonitas de Python, pero tengo que escribir la cadena XML en un archivo para que se lean de nuevo para usar las herramientas, que quiero evitar si es posible.

¿Qué herramientas bonitas de python que funcionan en cadenas están disponibles?

Aquí se explica cómo analizar desde una cadena de texto al tipo de datos estructurados lxml.

Python 2:

from lxml import etree xml_str = "textother text" root = etree.fromstring(xml_str) print etree.tostring(root, pretty_print=True) 

Python 3:

 from lxml import etree xml_str = "textother text" root = etree.fromstring(xml_str) print(etree.tostring(root, pretty_print=True).decode()) 

Salidas:

  text other text  

Yo uso la biblioteca lxml, y allí es tan simple como

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

Puede realizar esa operación utilizando cualquier etree , que puede generar mediante progtwigción o leer desde un archivo.

Si está utilizando el DOM de PyXML, es

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

Eso se imprime en la salida estándar, a menos que especifique una secuencia alternativa.

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

Para utilizar directamente el minidom, desea utilizar la función toprettyxml() .

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