test_minidom.py
来自「mallet是自然语言处理、机器学习领域的一个开源项目。」· Python 代码 · 共 650 行 · 第 1/2 页
PY
650 行
# test for xml.dom.minidomfrom xml.dom.minidom import parse, Node, Document, parseStringfrom xml.dom import HierarchyRequestErrimport xml.parsers.expatimport osimport sysimport tracebackfrom test_support import verboseif __name__ == "__main__": base = sys.argv[0]else: base = __file__tstfile = os.path.join(os.path.dirname(base), "test"+os.extsep+"xml")del basedef confirm(test, testname = "Test"): if not test: print "Failed " + testname raise ExceptionNode._debug = 1def testParseFromFile(): from StringIO import StringIO dom = parse(StringIO(open(tstfile).read())) dom.unlink() confirm(isinstance(dom,Document))def testGetElementsByTagName(): dom = parse(tstfile) confirm(dom.getElementsByTagName("LI") == \ dom.documentElement.getElementsByTagName("LI")) dom.unlink()def testInsertBefore(): dom = parseString("<doc><foo/></doc>") root = dom.documentElement elem = root.childNodes[0] nelem = dom.createElement("element") root.insertBefore(nelem, elem) confirm(len(root.childNodes) == 2 and root.childNodes.length == 2 and root.childNodes[0] is nelem and root.childNodes.item(0) is nelem and root.childNodes[1] is elem and root.childNodes.item(1) is elem and root.firstChild is nelem and root.lastChild is elem and root.toxml() == "<doc><element/><foo/></doc>" , "testInsertBefore -- node properly placed in tree") nelem = dom.createElement("element") root.insertBefore(nelem, None) confirm(len(root.childNodes) == 3 and root.childNodes.length == 3 and root.childNodes[1] is elem and root.childNodes.item(1) is elem and root.childNodes[2] is nelem and root.childNodes.item(2) is nelem and root.lastChild is nelem and nelem.previousSibling is elem and root.toxml() == "<doc><element/><foo/><element/></doc>" , "testInsertBefore -- node properly placed in tree") nelem2 = dom.createElement("bar") root.insertBefore(nelem2, nelem) confirm(len(root.childNodes) == 4 and root.childNodes.length == 4 and root.childNodes[2] is nelem2 and root.childNodes.item(2) is nelem2 and root.childNodes[3] is nelem and root.childNodes.item(3) is nelem and nelem2.nextSibling is nelem and nelem.previousSibling is nelem2 and root.toxml() == "<doc><element/><foo/><bar/><element/></doc>" , "testInsertBefore -- node properly placed in tree") dom.unlink()def _create_fragment_test_nodes(): dom = parseString("<doc/>") orig = dom.createTextNode("original") c1 = dom.createTextNode("foo") c2 = dom.createTextNode("bar") c3 = dom.createTextNode("bat") dom.documentElement.appendChild(orig) frag = dom.createDocumentFragment() frag.appendChild(c1) frag.appendChild(c2) frag.appendChild(c3) return dom, orig, c1, c2, c3, fragdef testInsertBeforeFragment(): dom, orig, c1, c2, c3, frag = _create_fragment_test_nodes() dom.documentElement.insertBefore(frag, None) confirm(tuple(dom.documentElement.childNodes) == (orig, c1, c2, c3), "insertBefore(<fragment>, None)") frag.unlink() dom.unlink() # dom, orig, c1, c2, c3, frag = _create_fragment_test_nodes() dom.documentElement.insertBefore(frag, orig) confirm(tuple(dom.documentElement.childNodes) == (c1, c2, c3, orig), "insertBefore(<fragment>, orig)") frag.unlink() dom.unlink()def testAppendChild(): dom = parse(tstfile) dom.documentElement.appendChild(dom.createComment(u"Hello")) confirm(dom.documentElement.childNodes[-1].nodeName == "#comment") confirm(dom.documentElement.childNodes[-1].data == "Hello") dom.unlink()def testAppendChildFragment(): dom, orig, c1, c2, c3, frag = _create_fragment_test_nodes() dom.documentElement.appendChild(frag) confirm(tuple(dom.documentElement.childNodes) == (orig, c1, c2, c3), "appendChild(<fragment>)") frag.unlink() dom.unlink()def testReplaceChildFragment(): dom, orig, c1, c2, c3, frag = _create_fragment_test_nodes() dom.documentElement.replaceChild(frag, orig) orig.unlink() confirm(tuple(dom.documentElement.childNodes) == (c1, c2, c3), "replaceChild(<fragment>)") frag.unlink() dom.unlink()def testLegalChildren(): dom = Document() elem = dom.createElement('element') text = dom.createTextNode('text') try: dom.appendChild(text) except HierarchyRequestErr: pass else: print "dom.appendChild didn't raise HierarchyRequestErr" dom.appendChild(elem) try: dom.insertBefore(text, elem) except HierarchyRequestErr: pass else: print "dom.appendChild didn't raise HierarchyRequestErr" try: dom.replaceChild(text, elem) except HierarchyRequestErr: pass else: print "dom.appendChild didn't raise HierarchyRequestErr" nodemap = elem.attributes try: nodemap.setNamedItem(text) except HierarchyRequestErr: pass else: print "NamedNodeMap.setNamedItem didn't raise HierarchyRequestErr" try: nodemap.setNamedItemNS(text) except HierarchyRequestErr: pass else: print "NamedNodeMap.setNamedItemNS didn't raise HierarchyRequestErr" elem.appendChild(text) dom.unlink()def testNamedNodeMapSetItem(): dom = Document() elem = dom.createElement('element') attrs = elem.attributes attrs["foo"] = "bar" a = attrs.item(0) confirm(a.ownerDocument is dom, "NamedNodeMap.__setitem__() sets ownerDocument") confirm(a.ownerElement is elem, "NamedNodeMap.__setitem__() sets ownerElement") confirm(a.value == "bar", "NamedNodeMap.__setitem__() sets value") confirm(a.nodeValue == "bar", "NamedNodeMap.__setitem__() sets nodeValue") elem.unlink() dom.unlink()def testNonZero(): dom = parse(tstfile) confirm(dom)# should not be zero dom.appendChild(dom.createComment("foo")) confirm(not dom.childNodes[-1].childNodes) dom.unlink()def testUnlink(): dom = parse(tstfile) dom.unlink()def testElement(): dom = Document() dom.appendChild(dom.createElement("abc")) confirm(dom.documentElement) dom.unlink()def testAAA(): dom = parseString("<abc/>") el = dom.documentElement el.setAttribute("spam", "jam2") confirm(el.toxml() == '<abc spam="jam2"/>', "testAAA") a = el.getAttributeNode("spam") confirm(a.ownerDocument is dom, "setAttribute() sets ownerDocument") confirm(a.ownerElement is dom.documentElement, "setAttribute() sets ownerElement") dom.unlink()def testAAB(): dom = parseString("<abc/>") el = dom.documentElement el.setAttribute("spam", "jam") el.setAttribute("spam", "jam2") confirm(el.toxml() == '<abc spam="jam2"/>', "testAAB") dom.unlink()def testAddAttr(): dom = Document() child = dom.appendChild(dom.createElement("abc")) child.setAttribute("def", "ghi") confirm(child.getAttribute("def") == "ghi") confirm(child.attributes["def"].value == "ghi") child.setAttribute("jkl", "mno") confirm(child.getAttribute("jkl") == "mno") confirm(child.attributes["jkl"].value == "mno") confirm(len(child.attributes) == 2) child.setAttribute("def", "newval") confirm(child.getAttribute("def") == "newval") confirm(child.attributes["def"].value == "newval") confirm(len(child.attributes) == 2) dom.unlink()def testDeleteAttr(): dom = Document() child = dom.appendChild(dom.createElement("abc")) confirm(len(child.attributes) == 0) child.setAttribute("def", "ghi") confirm(len(child.attributes) == 1) del child.attributes["def"] confirm(len(child.attributes) == 0) dom.unlink()def testRemoveAttr(): dom = Document() child = dom.appendChild(dom.createElement("abc")) child.setAttribute("def", "ghi") confirm(len(child.attributes) == 1) child.removeAttribute("def") confirm(len(child.attributes) == 0) dom.unlink()def testRemoveAttrNS(): dom = Document() child = dom.appendChild( dom.createElementNS("http://www.python.org", "python:abc")) child.setAttributeNS("http://www.w3.org", "xmlns:python", "http://www.python.org") child.setAttributeNS("http://www.python.org", "python:abcattr", "foo") confirm(len(child.attributes) == 2) child.removeAttributeNS("http://www.python.org", "abcattr") confirm(len(child.attributes) == 1) dom.unlink()def testRemoveAttributeNode(): dom = Document() child = dom.appendChild(dom.createElement("foo")) child.setAttribute("spam", "jam") confirm(len(child.attributes) == 1) node = child.getAttributeNode("spam") child.removeAttributeNode(node) confirm(len(child.attributes) == 0) dom.unlink()def testChangeAttr(): dom = parseString("<abc/>") el = dom.documentElement el.setAttribute("spam", "jam") confirm(len(el.attributes) == 1) el.setAttribute("spam", "bam") confirm(len(el.attributes) == 1) el.attributes["spam"] = "ham" confirm(len(el.attributes) == 1) el.setAttribute("spam2", "bam") confirm(len(el.attributes) == 2) el.attributes[ "spam2"] = "bam2" confirm(len(el.attributes) == 2) dom.unlink()def testGetAttrList(): passdef testGetAttrValues(): passdef testGetAttrLength(): passdef testGetAttribute(): passdef testGetAttributeNS(): passdef testGetAttributeNode(): passdef testGetElementsByTagNameNS(): d="""<foo xmlns:minidom="http://pyxml.sf.net/minidom"> <minidom:myelem/> </foo>""" dom = parseString(d) elem = dom.getElementsByTagNameNS("http://pyxml.sf.net/minidom","myelem") confirm(len(elem) == 1) dom.unlink()def testGetEmptyNodeListFromElementsByTagNameNS(): pass
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?