| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145 | #!/usr/bin/python -u## this tests the entities substitutions with the XmlTextReader interface#import sysimport StringIOimport libxml2# Memory debug specificlibxml2.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 01 14 #text 01 1 label 02 3 #text 01 15 label 01 14 #text 01 1 item 02 3 #text 01 15 item 01 14 #text 00 15 foo 0"""result = ""doc = libxml2.parseDoc(docstr)reader = doc.readerWalker();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)doc.freeDoc()## Reuse the reader for another document testing the ReaderNewWalker API#docstr="""<foo><label>some text</label><item>1000</item></foo>"""expect="""0 1 foo 01 14 #text 01 1 label 02 3 #text 01 15 label 01 14 #text 01 1 item 02 3 #text 01 15 item 01 14 #text 00 15 foo 0"""result = ""doc = libxml2.parseDoc(docstr)reader.NewWalker(doc)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)doc.freeDoc()## Reuse the reader for another document testing the ReaderNewxxx API#docstr="""<foo><label>some text</label><item>1000</item></foo>"""expect="""0 1 foo 01 14 #text 01 1 label 02 3 #text 01 15 label 01 14 #text 01 1 item 02 3 #text 01 15 item 01 14 #text 00 15 foo 0"""result = ""reader.NewDoc(docstr, "test3", None, 0)ret = reader.Read()while ret == 1:    processNode(reader)    ret = reader.Read()if ret != 0:    print "Error parsing the document test3"    sys.exit(1)if result != expect:    print "Unexpected result for test3"    print result    sys.exit(1)## cleanup#del reader# Memory debug specificlibxml2.cleanupParser()if libxml2.debugMemory(1) == 0:    print "OK"else:    print "Memory leak %d bytes" % (libxml2.debugMemory(1))    libxml2.dumpMemory()
 |