Mein Vorschlag wäre, die startElement-Methode folgendermaßen abzuändern:
def startElement(self, name, attrs):
self._emitChars()
fmtAtts = " ".join(['%s="%s"'%it for it in attrs.items()])
if fmtAtts:
fmtAtts = " "+fmtAtts
self._printIndented("<%s%s>"%(name, fmtAtts))
self.elementStack.append(name)