Now let’s do some serious XML output in Python using cElementTree.
# this is included in Python 2.5+ from xml.etree.cElementTree import ElementTree, Element, dump # let's create the root element root = Element("teabag") # give it a child with an attribute child1 = Element("spam") child1.attrib["name"] = "value" root.append(child1) # and a child with text content child2 = Element("eggs") child2.text = "spam and eggs" root.append(child2) # print the whole thing to stdout dump(root) # or to a file ElementTree(root).write("teabag.xml")
See the author’s website for downloads and usage information of cElementTree.
Using this API, I was able to create a 47 Mb XML file in a few minutes, burning roughly 300 Mb of heap space. This XML file represents a graph of graphs, namely the control flow graph of each function of IDA Pro. Here are some screenshots, using yEd for the visualization part: