mirror of
				https://gitlab.gnome.org/GNOME/libxml2.git
				synced 2025-10-30 10:45:36 +03:00 
			
		
		
		
	Need fixing on the Capsule usage, the lack of PyBytes, lack of io module and the way to access exception details.
		
			
				
	
	
		
			102 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			102 lines
		
	
	
		
			1.7 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/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()
 |