#!/usr/bin/python -u # # this tests the entities substitutions with the XmlTextReader interface # import sys import libxml2

# Memory debug specific libxml2.debugMemory(1)

result = “” def processNode(reader):

global result

result = result + "%d %d %s %d\n" % (reader.Depth(), reader.NodeType(),
                       reader.Name(), reader.IsEmptyElement())

# # Parse a document testing the readerForxxx API # docstr=“”“<foo> <label>some text</label> <item>100</item> </foo>”“” expect=“”“0 1 foo 0 1 14 text 0 1 1 label 0 2 3 text 0 1 15 label 0 1 14 text 0 1 1 item 0 2 3 text 0 1 15 item 0 1 14 text 0 0 15 foo 0 ”“” result = “”

reader = libxml2.readerForDoc(docstr, “test1”, None, 0) ret = reader.Read() while ret == 1:

processNode(reader)
ret = reader.Read()

if ret != 0:

print("Error parsing the document test1")
sys.exit(1)

if result != expect:

print("Unexpected result for test1")
print(result)
sys.exit(1)

# # Reuse the reader for another document testing the ReaderNewxxx API # docstr=“”“<foo> <label>some text</label> <item>1000</item> </foo>”“” expect=“”“0 1 foo 0 1 14 text 0 1 1 label 0 2 3 text 0 1 15 label 0 1 14 text 0 1 1 item 0 2 3 text 0 1 15 item 0 1 14 text 0 0 15 foo 0 ”“” result = “”

reader.NewDoc(docstr, “test2”, None, 0) ret = reader.Read() while ret == 1:

processNode(reader)
ret = reader.Read()

if ret != 0:

print("Error parsing the document test2")
sys.exit(1)

if result != expect:

print("Unexpected result for test2")
print(result)
sys.exit(1)

# # cleanup # 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()