Use xml.etree.ElementTree to print nicely formatted xml files [duplicate] Use xml.etree.ElementTree to print nicely formatted xml files [duplicate] python python

Use xml.etree.ElementTree to print nicely formatted xml files [duplicate]


You can use the function toprettyxml() from xml.dom.minidom in order to do that:

def prettify(elem):    """Return a pretty-printed XML string for the Element.    """    rough_string = ElementTree.tostring(elem, 'utf-8')    reparsed = minidom.parseString(rough_string)    return reparsed.toprettyxml(indent="\t")

The idea is to print your Element in a string, parse it using minidom and convert it again in XML using the toprettyxml function.

Source: http://pymotw.com/2/xml/etree/ElementTree/create.html


You could use the library lxml (Note top level link is now spam) , which is a superset of ElementTree. Its tostring() method includes a parameter pretty_print - for example:

>>> print(etree.tostring(root, pretty_print=True))<root>  <child1/>  <child2/>  <child3/></root>