#!/usr/bin/python -u # # this tests the basic APIs of the XmlTextReader interface # import libxml2 import sys try:

import StringIO
str_io = StringIO.StringIO

except:

import io
str_io = io.StringIO

# Memory debug specific libxml2.debugMemory(1)

expect=“”“–> (3) test1:1:xmlns: URI foo is not absolute –> (4) test1:1:Opening and ending tag mismatch: c line 1 and a ”“” err=“” def myErrorHandler(arg,msg,severity,locator):

global err
err = err + "%s (%d) %s:%d:%s" % (arg,severity,locator.BaseURI(),locator.LineNumber(),msg)

f = str_io(“”“<a xmlns=”foo“><b b1=”b1“/><c>content of c</a>”“”) input = libxml2.inputBuffer(f) reader = input.newTextReader(“test1”) reader.SetErrorHandler(myErrorHandler,“–>”) while reader.Read() == 1:

pass

if err != expect:

print("error")
print("received %s" %(err))
print("expected %s" %(expect))
sys.exit(1)

reader.SetErrorHandler(None,None) if reader.GetErrorHandler() != (None,None):

print("GetErrorHandler failed")
sys.exit(1)

# # cleanup for memory allocation counting # del f del input del reader

# Memory debug specific libxml2.cleanupParser() if libxml2.debugMemory(1) == 0:

print("OK")

else:

print("Memory leak %d bytes" % (libxml2.debugMemory(1)))
libxml2.dumpMemory()