Search code examples
pythonxmlparsingelementtreepretty-print

Pretty print xml code and put in a variable


I just found this method on Stackoverflow to print an xml code :

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)

But i would like to put what i print in a variable. I tried the simplest way :

data = Elementtree.dump(root)
print("==>", data)

But it returns me "==> None" It's like : ElementTree.dump(root) is printing no matter what.

Thanks for helping


Solution

  • data = Elementtree.tostring(root)
    print("==>", data)