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)