paulb@53 | 1 | #!/usr/bin/env python |
paulb@53 | 2 | |
paulb@53 | 3 | import macrotest |
paulb@53 | 4 | import xml.dom.minidom |
paulb@53 | 5 | import libxml2dom |
paulb@53 | 6 | import xml.dom |
paulb@53 | 7 | import time |
paulb@53 | 8 | import sys |
paulb@53 | 9 | |
paulb@53 | 10 | def find_root(d): |
paulb@53 | 11 | root = None |
paulb@53 | 12 | |
paulb@53 | 13 | for n in d.childNodes: |
paulb@53 | 14 | if n.nodeType == xml.dom.Node.ELEMENT_NODE: |
paulb@53 | 15 | root = n |
paulb@53 | 16 | break |
paulb@53 | 17 | |
paulb@53 | 18 | return root |
paulb@53 | 19 | |
paulb@53 | 20 | def test_import(d): |
paulb@53 | 21 | d2 = xml.dom.minidom.getDOMImplementation().createDocument("nsD", "newdoc", None) |
paulb@53 | 22 | imported = d2.importNode(find_root(d), 1) |
paulb@53 | 23 | d2.replaceChild(imported, find_root(d2)) |
paulb@53 | 24 | return d, d2 |
paulb@53 | 25 | |
paulb@53 | 26 | def test_import2(d): |
paulb@53 | 27 | d2 = libxml2dom.createDocument("nsD", "newdoc", None) |
paulb@53 | 28 | imported = d2.importNode(find_root(d), 1) |
paulb@53 | 29 | d2.replaceChild(imported, find_root(d2)) |
paulb@53 | 30 | return d, d2 |
paulb@53 | 31 | |
paulb@56 | 32 | if __name__ == "__main__": |
paulb@56 | 33 | if sys.argv[2] == "macrotest": |
paulb@56 | 34 | |
paulb@56 | 35 | x2_d = macrotest.parseFile(sys.argv[1]) |
paulb@53 | 36 | |
paulb@56 | 37 | t = time.time() |
paulb@56 | 38 | x2_d1, x2_d2 = macrotest.test_import(x2_d) |
paulb@56 | 39 | macrotest.toFile(x2_d, "/tmp/xxx_macrotest.xml") |
paulb@56 | 40 | print "Time", time.time() - t, "seconds" |
paulb@53 | 41 | |
paulb@56 | 42 | elif sys.argv[2] == "minidom": |
paulb@56 | 43 | |
paulb@56 | 44 | d = xml.dom.minidom.parse(sys.argv[1]) |
paulb@53 | 45 | |
paulb@56 | 46 | t = time.time() |
paulb@56 | 47 | d1, d2 = test_import(d) |
paulb@56 | 48 | open("/tmp/xxx_minidom.xml", "wb").write(d1.toxml("utf-8")) |
paulb@56 | 49 | print "Time", time.time() - t, "seconds" |
paulb@56 | 50 | |
paulb@56 | 51 | elif sys.argv[2] == "libxml2dom": |
paulb@53 | 52 | |
paulb@56 | 53 | d = libxml2dom.parse(sys.argv[1]) |
paulb@53 | 54 | |
paulb@56 | 55 | t = time.time() |
paulb@56 | 56 | d1, d2 = test_import2(d) |
paulb@56 | 57 | libxml2dom.toStream(d1, open("/tmp/xxx_libxml2dom.xml", "wb")) |
paulb@56 | 58 | print "Time", time.time() - t, "seconds" |
paulb@53 | 59 | |
paulb@53 | 60 | # vim: tabstop=4 expandtab shiftwidth=4 |