X-Git-Url: https://git.saurik.com/wxWidgets.git/blobdiff_plain/510bb7480c5138dd5127ed3d8b1d9cbab39983c9..1f780e48af479e7bf9a07eaaa1ab6b41f1ffb17b:/wxPython/samples/ide/activegrid/util/xmlprettyprinter.py?ds=sidebyside diff --git a/wxPython/samples/ide/activegrid/util/xmlprettyprinter.py b/wxPython/samples/ide/activegrid/util/xmlprettyprinter.py new file mode 100644 index 0000000000..29dbf16be3 --- /dev/null +++ b/wxPython/samples/ide/activegrid/util/xmlprettyprinter.py @@ -0,0 +1,63 @@ +#---------------------------------------------------------------------------- +# Name: xmlprettyprinter.py +# Purpose: +# +# Author: John Spurling +# +# Created: 9/21/04 +# CVS-ID: $Id$ +# Copyright: (c) 2004-2005 ActiveGrid, Inc. +# License: wxWindows License +#---------------------------------------------------------------------------- +import xml.sax +import xml.sax.handler + + +class XMLPrettyPrinter(xml.sax.ContentHandler): + def __init__(self, indentationChar=' ', newlineChar='\n'): + self.xmlOutput = '' + self.indentationLevel = 0 + self.indentationChar = indentationChar + self.elementStack = [] + self.newlineChar = newlineChar + self.hitCharData = False + + ## ContentHandler methods + def startElement(self, name, attrs): + indentation = self.newlineChar + (self.indentationLevel * self.indentationChar) + # build attribute string + attrstring = '' + for attr in attrs.getNames(): + value = attrs[attr] + attrstring += ' %s="%s"' % (attr, value) + self.xmlOutput += '%s<%s%s>' % (indentation, name, attrstring) + self.indentationLevel += 1 + self.elementStack.append(name) + self.hitCharData = False + + def characters(self, content): + self.xmlOutput += content + self.hitCharData = True + + def endElement(self, name): + self.indentationLevel -= 1 + indentation = '' + if not self.hitCharData: +## indentation += self.newlineChar + (self.indentationLevel * self.indentationChar) + indentation += self.indentationLevel * self.indentationChar + else: + self.hitCharData = False + self.xmlOutput += '%s%s' % (indentation, self.elementStack.pop(), self.newlineChar) + + def getXMLString(self): + return self.xmlOutput[1:] + +def xmlprettyprint(xmlstr, spaces=4): + xpp = XMLPrettyPrinter(indentationChar=' ' * spaces) + xml.sax.parseString(xmlstr, xpp) + return xpp.getXMLString() + +if __name__ == '__main__': + simpleTestString = """some texttwo's data""" + print prettyprint(simpleTestString) +