Outputting XML in standard Python

Is it really this ugly? I expected something like this:

doc = xmldoc()
doc.start('foo', { 'id': 'blah' })
print doc

and I thought I had it in SimpleXMLWriter. However, I have to jump hoops to get it to output to a string, and it doesn’t have any pretty-print. I tried using ElementTree, but that also doesn’t pretty print! libxml2 is horribly low-level. lxml seems to do pretty printing, but it’s still just as ugly as the best option I’ve found so far, xml.dom.minidom:

from xml.dom.minidom import Document
foo = doc.createElement('foo')
foo.setAttribute('id', 'blah')
sub = doc.createElement('sub')

Yuck! If I’m building up a document, I almost always want to append directly at the last point: why do I have to keep track of all these elements by hand? I presume I’m missing some small standard helper module, but #python didn’t know about it. Anyone?