# License: wxWindows License
#----------------------------------------------------------------------------
import xml.sax
-import xml.sax.handler
-
+from activegrid.util.lang import *
class XMLPrettyPrinter(xml.sax.ContentHandler):
def __init__(self, indentationChar=' ', newlineChar='\n'):
## ContentHandler methods
def startElement(self, name, attrs):
- indentation = self.newlineChar + (self.indentationLevel * self.indentationChar)
+ indentation = self.newlineChar + (self.indentationChar * self.indentationLevel)
# build attribute string
attrstring = ''
for attr in attrs.getNames():
self.hitCharData = False
def characters(self, content):
+## print "--> characters(%s)" % content
self.xmlOutput += content
self.hitCharData = True
self.indentationLevel -= 1
indentation = ''
if not self.hitCharData:
-## indentation += self.newlineChar + (self.indentationLevel * self.indentationChar)
- indentation += self.indentationLevel * self.indentationChar
+ indentation += self.newlineChar + (self.indentationChar * self.indentationLevel)
+## indentation += self.indentationChar * self.indentationLevel
else:
self.hitCharData = False
- self.xmlOutput += '%s</%s>%s' % (indentation, self.elementStack.pop(), self.newlineChar)
+## self.xmlOutput += '%s</%s>%s' % (indentation, self.elementStack.pop(), self.newlineChar)
+ self.xmlOutput += '%s</%s>' % (indentation, self.elementStack.pop())
def getXMLString(self):
return self.xmlOutput[1:]
xml.sax.parseString(xmlstr, xpp)
return xpp.getXMLString()
-if __name__ == '__main__':
+if isMain(__name__):
simpleTestString = """<one>some text<two anattr="booga">two's data</two></one>"""
- print prettyprint(simpleTestString)
+ print xmlprettyprint(simpleTestString)