home *** CD-ROM | disk | FTP | other *** search
/ PC Welt 2006 November (DVD) / PCWELT_11_2006.ISO / casper / filesystem.squashfs / usr / share / doc / python-libxml2 / examples / pushSAXhtml.py < prev    next >
Encoding:
Python Source  |  2002-09-12  |  1.6 KB  |  66 lines

  1. #!/usr/bin/python -u
  2. import sys
  3. import libxml2
  4.  
  5. # Memory debug specific
  6. libxml2.debugMemory(1)
  7.  
  8. log = ""
  9.  
  10. class callback:
  11.     def startDocument(self):
  12.         global log
  13.         log = log + "startDocument:"
  14.  
  15.     def endDocument(self):
  16.         global log
  17.         log = log + "endDocument:"
  18.  
  19.     def startElement(self, tag, attrs):
  20.         global log
  21.         log = log + "startElement %s %s:" % (tag, attrs)
  22.  
  23.     def endElement(self, tag):
  24.         global log
  25.         log = log + "endElement %s:" % (tag)
  26.  
  27.     def characters(self, data):
  28.         global log
  29.         log = log + "characters: %s:" % (data)
  30.  
  31.     def warning(self, msg):
  32.         global log
  33.         log = log + "warning: %s:" % (msg)
  34.  
  35.     def error(self, msg):
  36.         global log
  37.         log = log + "error: %s:" % (msg)
  38.  
  39.     def fatalError(self, msg):
  40.         global log
  41.         log = log + "fatalError: %s:" % (msg)
  42.  
  43. handler = callback()
  44.  
  45. ctxt = libxml2.htmlCreatePushParser(handler, "<foo", 4, "test.xml")
  46. chunk = " url='tst'>b"
  47. ctxt.htmlParseChunk(chunk, len(chunk), 0)
  48. chunk = "ar</foo>"
  49. ctxt.htmlParseChunk(chunk, len(chunk), 1)
  50. ctxt=None
  51.  
  52. reference = """startDocument:startElement html None:startElement body None:startElement foo {'url': 'tst'}:error: Tag foo invalid
  53. :characters: bar:endElement foo:endElement body:endElement html:endDocument:"""
  54. if log != reference:
  55.     print "Error got: %s" % log
  56.     print "Exprected: %s" % reference
  57.     sys.exit(1)
  58.  
  59. # Memory debug specific
  60. libxml2.cleanupParser()
  61. if libxml2.debugMemory(1) == 0:
  62.     print "OK"
  63. else:
  64.     print "Memory leak %d bytes" % (libxml2.debugMemory(1))
  65.     libxml2.dumpMemory()
  66.