1 #!/usr/bin/python -u 2 import sys 3 import libxml2 4 5 # Memory debug specific 6 libxml2.debugMemory(1) 7 8 # 9 # Testing XML document serialization 10 # 11 doc = libxml2.parseDoc("""<root><foo>hello</foo></root>""") 12 str = doc.serialize() 13 if str != """<?xml version="1.0"?> 14 <root><foo>hello</foo></root> 15 """: 16 print("error serializing XML document 1") 17 sys.exit(1) 18 str = doc.serialize("iso-8859-1") 19 if str != """<?xml version="1.0" encoding="iso-8859-1"?> 20 <root><foo>hello</foo></root> 21 """: 22 print("error serializing XML document 2") 23 sys.exit(1) 24 str = doc.serialize(format=1) 25 if str != """<?xml version="1.0"?> 26 <root> 27 <foo>hello</foo> 28 </root> 29 """: 30 print("error serializing XML document 3") 31 sys.exit(1) 32 str = doc.serialize("iso-8859-1", 1) 33 if str != """<?xml version="1.0" encoding="iso-8859-1"?> 34 <root> 35 <foo>hello</foo> 36 </root> 37 """: 38 print("error serializing XML document 4") 39 sys.exit(1) 40 41 # 42 # Test serializing a subnode 43 # 44 root = doc.getRootElement() 45 str = root.serialize() 46 if str != """<root><foo>hello</foo></root>""": 47 print("error serializing XML root 1") 48 sys.exit(1) 49 str = root.serialize("iso-8859-1") 50 if str != """<root><foo>hello</foo></root>""": 51 print("error serializing XML root 2") 52 sys.exit(1) 53 str = root.serialize(format=1) 54 if str != """<root> 55 <foo>hello</foo> 56 </root>""": 57 print("error serializing XML root 3") 58 sys.exit(1) 59 str = root.serialize("iso-8859-1", 1) 60 if str != """<root> 61 <foo>hello</foo> 62 </root>""": 63 print("error serializing XML root 4") 64 sys.exit(1) 65 doc.freeDoc() 66 67 # 68 # Testing HTML document serialization 69 # 70 doc = libxml2.htmlParseDoc("""<html><head><title>Hello</title><body><p>hello</body></html>""", None) 71 str = doc.serialize() 72 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 73 <html><head><title>Hello</title></head><body><p>hello</p></body></html> 74 """: 75 print("error serializing HTML document 1") 76 sys.exit(1) 77 str = doc.serialize("ISO-8859-1") 78 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 79 <html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html> 80 """: 81 print("error serializing HTML document 2") 82 sys.exit(1) 83 str = doc.serialize(format=1) 84 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 85 <html> 86 <head> 87 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 88 <title>Hello</title> 89 </head> 90 <body><p>hello</p></body> 91 </html> 92 """: 93 print("error serializing HTML document 3") 94 sys.exit(1) 95 str = doc.serialize("iso-8859-1", 1) 96 if str != """<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> 97 <html> 98 <head> 99 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 100 <title>Hello</title> 101 </head> 102 <body><p>hello</p></body> 103 </html> 104 """: 105 print("error serializing HTML document 4") 106 sys.exit(1) 107 108 # 109 # Test serializing a subnode 110 # 111 doc.htmlSetMetaEncoding(None) 112 root = doc.getRootElement() 113 str = root.serialize() 114 if str != """<html><head><title>Hello</title></head><body><p>hello</p></body></html>""": 115 print("error serializing HTML root 1") 116 sys.exit(1) 117 str = root.serialize("ISO-8859-1") 118 if str != """<html><head><meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"><title>Hello</title></head><body><p>hello</p></body></html>""": 119 print("error serializing HTML root 2") 120 sys.exit(1) 121 str = root.serialize(format=1) 122 if str != """<html> 123 <head> 124 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 125 <title>Hello</title> 126 </head> 127 <body><p>hello</p></body> 128 </html>""": 129 print("error serializing HTML root 3") 130 sys.exit(1) 131 str = root.serialize("iso-8859-1", 1) 132 if str != """<html> 133 <head> 134 <meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1"> 135 <title>Hello</title> 136 </head> 137 <body><p>hello</p></body> 138 </html>""": 139 print("error serializing HTML root 4") 140 sys.exit(1) 141 142 doc.freeDoc() 143 144 # Memory debug specific 145 libxml2.cleanupParser() 146 if libxml2.debugMemory(1) == 0: 147 print("OK") 148 else: 149 print("Memory leak %d bytes" % (libxml2.debugMemory(1))) 150 libxml2.dumpMemory() 151