mirror of
				https://gitlab.gnome.org/GNOME/libxml2.git
				synced 2025-10-28 23:14:57 +03:00 
			
		
		
		
	* tree.c python/tests/Makefile.am python/tests/cutnpaste.py: fixed xmlReconciliateNs(), added a Python test/example for inter-document cut'n paste * python/libxml.py: fixed node.doc on document nodes and added xpathEval() onto node objects Daniel
		
			
				
	
	
		
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			49 lines
		
	
	
		
			1.3 KiB
		
	
	
	
		
			Python
		
	
	
		
			Executable File
		
	
	
	
	
| #!/usr/bin/python -u
 | |
| import sys
 | |
| import libxml2
 | |
| 
 | |
| # Memory debug specific
 | |
| libxml2.debugMemory(1)
 | |
| 
 | |
| #
 | |
| # Testing XML document serialization
 | |
| #
 | |
| source = libxml2.parseDoc("""<?xml version="1.0"?>
 | |
| <root xmlns:foo="http://example.org/foo"
 | |
|       xmlns:bar="http://example.org/bar">
 | |
| <include xmlns="http://example.org/include">
 | |
| <fragment><foo:elem bar="tricky"/></fragment>
 | |
| </include>
 | |
| </root>
 | |
| """)
 | |
| 
 | |
| target = libxml2.parseDoc("""<?xml version="1.0"?>
 | |
| <root xmlns:foobar="http://example.org/bar"/>""")
 | |
| 
 | |
| fragment = source.xpathEval("//*[name()='fragment']")[0]
 | |
| dest = target.getRootElement()
 | |
| 
 | |
| # do a cut and paste operation
 | |
| fragment.unlinkNode()
 | |
| dest.addChild(fragment)
 | |
| # do the namespace fixup
 | |
| dest.reconciliateNs(target)
 | |
| 
 | |
| # The source tree can be freed at that point
 | |
| source.freeDoc()
 | |
| 
 | |
| # check the resulting tree
 | |
| str = dest.serialize()
 | |
| if str != """<root xmlns:foobar="http://example.org/bar" xmlns:default="http://example.org/include" xmlns:foo="http://example.org/foo"><default:fragment><foo:elem bar="tricky"/></default:fragment></root>""":
 | |
|     print "reconciliateNs() failed"
 | |
|     sys.exit(1)
 | |
| target.freeDoc()
 | |
| 
 | |
| # Memory debug specific
 | |
| libxml2.cleanupParser()
 | |
| if libxml2.debugMemory(1) == 0:
 | |
|     print "OK"
 | |
| else:
 | |
|     print "Memory leak %d bytes" % (libxml2.debugMemory(1))
 | |
|     libxml2.dumpMemory()
 |