<html><head><meta name="color-scheme" content="light dark"></head><body><pre style="word-wrap: break-word; white-space: pre-wrap;">#!/usr/bin/python -u
import sys
import libxml2

# Memory debug specific
libxml2.debugMemory(1)

#
# Testing XML document serialization
#
doc = libxml2.parseDoc("""&lt;root&gt;&lt;foo&gt;hello&lt;/foo&gt;&lt;/root&gt;""")
str = doc.serialize()
if str != """&lt;?xml version="1.0"?&gt;
&lt;root&gt;&lt;foo&gt;hello&lt;/foo&gt;&lt;/root&gt;
""":
   print "error serializing XML document 1"
   sys.exit(1)
str = doc.serialize("iso-8859-1")
if str != """&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;
&lt;root&gt;&lt;foo&gt;hello&lt;/foo&gt;&lt;/root&gt;
""":
   print "error serializing XML document 2"
   sys.exit(1)
str = doc.serialize(format=1)
if str != """&lt;?xml version="1.0"?&gt;
&lt;root&gt;
&lt;foo&gt;hello&lt;/foo&gt;
&lt;/root&gt;
""":
   print "error serializing XML document 3"
   sys.exit(1)
str = doc.serialize("iso-8859-1", 1)
if str != """&lt;?xml version="1.0" encoding="iso-8859-1"?&gt;
&lt;root&gt;
&lt;foo&gt;hello&lt;/foo&gt;
&lt;/root&gt;
""":
   print "error serializing XML document 4"
   sys.exit(1)

#
# Test serializing a subnode
#
root = doc.getRootElement()
str = root.serialize()
if str != """&lt;root&gt;&lt;foo&gt;hello&lt;/foo&gt;&lt;/root&gt;""":
   print "error serializing XML root 1"
   sys.exit(1)
str = root.serialize("iso-8859-1")
if str != """&lt;root&gt;&lt;foo&gt;hello&lt;/foo&gt;&lt;/root&gt;""":
   print "error serializing XML root 2"
   sys.exit(1)
str = root.serialize(format=1)
if str != """&lt;root&gt;
&lt;foo&gt;hello&lt;/foo&gt;
&lt;/root&gt;""":
   print "error serializing XML root 3"
   sys.exit(1)
str = root.serialize("iso-8859-1", 1)
if str != """&lt;root&gt;
&lt;foo&gt;hello&lt;/foo&gt;
&lt;/root&gt;""":
   print "error serializing XML root 4"
   sys.exit(1)
doc.freeDoc()

#
# Testing HTML document serialization
#
doc = libxml2.htmlParseDoc("""&lt;html&gt;&lt;head&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;body&gt;&lt;p&gt;hello&lt;/body&gt;&lt;/html&gt;""", None)
str = doc.serialize()
if str != """&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"&gt;
&lt;html&gt;&lt;head&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;hello&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;
""":
   print "error serializing HTML document 1"
   sys.exit(1)
str = doc.serialize("ISO-8859-1")
if str != """&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"&gt;
&lt;html&gt;&lt;head&gt;&lt;meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;hello&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;
""":
   print "error serializing HTML document 2"
   sys.exit(1)
str = doc.serialize(format=1)
if str != """&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"&gt;
&lt;title&gt;Hello&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;p&gt;hello&lt;/p&gt;&lt;/body&gt;
&lt;/html&gt;
""":
   print "error serializing HTML document 3"
   sys.exit(1)
str = doc.serialize("iso-8859-1", 1)
if str != """&lt;!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"&gt;
&lt;html&gt;
&lt;head&gt;
&lt;meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"&gt;
&lt;title&gt;Hello&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;p&gt;hello&lt;/p&gt;&lt;/body&gt;
&lt;/html&gt;
""":
   print "error serializing HTML document 4"
   sys.exit(1)

#
# Test serializing a subnode
#
doc.htmlSetMetaEncoding(None)
root = doc.getRootElement()
str = root.serialize()
if str != """&lt;html&gt;&lt;head&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;hello&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;""":
   print "error serializing HTML root 1"
   sys.exit(1)
str = root.serialize("ISO-8859-1")
if str != """&lt;html&gt;&lt;head&gt;&lt;meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"&gt;&lt;title&gt;Hello&lt;/title&gt;&lt;/head&gt;&lt;body&gt;&lt;p&gt;hello&lt;/p&gt;&lt;/body&gt;&lt;/html&gt;""":
   print "error serializing HTML root 2"
   sys.exit(1)
str = root.serialize(format=1)
if str != """&lt;html&gt;
&lt;head&gt;
&lt;meta content="text/html; charset=ISO-8859-1" http-equiv="Content-Type"&gt;
&lt;title&gt;Hello&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;p&gt;hello&lt;/p&gt;&lt;/body&gt;
&lt;/html&gt;""":
   print "error serializing HTML root 3"
   sys.exit(1)
str = root.serialize("iso-8859-1", 1)
if str != """&lt;html&gt;
&lt;head&gt;
&lt;meta content="text/html; charset=iso-8859-1" http-equiv="Content-Type"&gt;
&lt;title&gt;Hello&lt;/title&gt;
&lt;/head&gt;
&lt;body&gt;&lt;p&gt;hello&lt;/p&gt;&lt;/body&gt;
&lt;/html&gt;""":
   print "error serializing HTML root 4"
   sys.exit(1)

doc.freeDoc()

# Memory debug specific
libxml2.cleanupParser()
if libxml2.debugMemory(1) == 0:
    print "OK"
else:
    print "Memory leak %d bytes" % (libxml2.debugMemory(1))
    libxml2.dumpMemory()
</pre></body></html>