# # program to prettyprint an XML tree # import xml.etree.ElementTree as ET import sys # # by how many spaces should a child be indented from its parent? # factor = 4 # # put the attributes into a string # make sure there is no trailing space # def print_node_attributes(node): strout = '' # now add on the attributes for key in node.attrib: strout += '%s="%s" ' % (key, node.attrib[key]) # return this, less any trailing spaces strout = strout.rstrip() return strout # # go through the XML tree; we do this recursively # def find_kids(node, depth): global factor # build the indent; factor spaces for each level indent = '' for i in range(factor * depth): indent += ' ' # print the opening tag + attributes print indent + "<" + node.tag, if node.attrib: attrstr = print_node_attributes(node) else: attrstr = '' # see if there are any kids # assume no children initially anykids = False for child in node: # at least one -- drop out anykids = True; break; if not anykids: # no -- close the tag and element print attrstr + "/>" else: # yes -- close tag, leave element open print attrstr + ">" # now print the kids for child in node: find_kids(child, depth + 1) # and close the element print indent + "" # load the XML into memory # fptr = open("sample1-output2.xml", "r") xmltree = ET.parse(fptr) xmltreeroot = xmltree.getroot() # # print the tree # find_kids(xmltreeroot, 0)