def test_sax_to_pulldom_multiple_namespaces(self): tree = self.parse('<a xmlns="blaA" xmlns:a="blaA"></a>') handler = pulldom.SAX2DOM() sax.saxify(tree, handler) dom = handler.document # With multiple prefix definitions, the node should keep the one # that was actually used, even if the others also are valid. self.assertEqual('a', dom.firstChild.localName) self.assertEqual('blaA', dom.firstChild.namespaceURI) self.assertEqual(None, dom.firstChild.prefix) tree = self.parse('<a:a xmlns="blaA" xmlns:a="blaA"></a:a>') handler = pulldom.SAX2DOM() sax.saxify(tree, handler) dom = handler.document self.assertEqual('a', dom.firstChild.localName) self.assertEqual('blaA', dom.firstChild.namespaceURI) self.assertEqual('a', dom.firstChild.prefix)
def testSAX2DOM(self): """Ensure SAX2DOM expands nodes as expected.""" sax2dom = pulldom.SAX2DOM() sax2dom.startDocument() sax2dom.startElement("doc", {}) sax2dom.characters("text") sax2dom.startElement("subelm", {}) sax2dom.characters("text") sax2dom.endElement("subelm") sax2dom.characters("text") sax2dom.endElement("doc") sax2dom.endDocument() doc = sax2dom.document root = doc.documentElement (text1, elm1, text2) = root.childNodes text3 = elm1.childNodes[0] self.assertIsNone(text1.previousSibling) self.assertIs(text1.nextSibling, elm1) self.assertIs(elm1.previousSibling, text1) self.assertIs(elm1.nextSibling, text2) self.assertIs(text2.previousSibling, elm1) self.assertIsNone(text2.nextSibling) self.assertIsNone(text3.previousSibling) self.assertIsNone(text3.nextSibling) self.assertIs(root.parentNode, doc) self.assertIs(text1.parentNode, root) self.assertIs(elm1.parentNode, root) self.assertIs(text2.parentNode, root) self.assertIs(text3.parentNode, elm1) doc.unlink()
def testSAX2DOM(): from xml.dom import pulldom sax2dom = pulldom.SAX2DOM() sax2dom.startDocument() sax2dom.startElement("doc", {}) sax2dom.characters("text") sax2dom.startElement("subelm", {}) sax2dom.characters("text") sax2dom.endElement("subelm") sax2dom.characters("text") sax2dom.endElement("doc") sax2dom.endDocument() doc = sax2dom.document root = doc.documentElement (text1, elm1, text2) = root.childNodes text3 = elm1.childNodes[0] confirm( text1.previousSibling is None and text1.nextSibling is elm1 and elm1.previousSibling is text1 and elm1.nextSibling is text2 and text2.previousSibling is elm1 and text2.nextSibling is None and text3.previousSibling is None and text3.nextSibling is None, "testSAX2DOM - siblings") confirm( root.parentNode is doc and text1.parentNode is root and elm1.parentNode is root and text2.parentNode is root and text3.parentNode is elm1, "testSAX2DOM - parents") doc.unlink()
def test_sax_to_pulldom(self): tree = self.parse( '<a xmlns="blaA">ab<b:b xmlns:b="blaB">bb</b:b>ba</a>') handler = pulldom.SAX2DOM() sax.saxify(tree, handler) dom = handler.document self.assertEqual('a', dom.firstChild.localName) self.assertEqual('blaA', dom.firstChild.namespaceURI) children = dom.firstChild.childNodes self.assertEqual('ab', children[0].nodeValue) self.assertEqual('blaB', children[1].namespaceURI) self.assertEqual('ba', children[2].nodeValue)
def reset(self): self.pulldom = pulldom.SAX2DOM() # This content handler relies on namespace support self.parser.setFeature(xml.sax.handler.feature_namespaces, 1) self.parser.setContentHandler(self.pulldom)
def reset(self): self.pulldom = pulldom.SAX2DOM() self.parser.setFeature(xml.sax.handler.feature_namespaces, 1) self.parser.setContentHandler(self.pulldom)
# test for xml.dom.minidom