123456789101112131415161718192021222324252627282930313233343536373839404142434445464748 |
- #!/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()
|