示例#1
0
文件: test_sax.py 项目: zfl926/lxml
    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)
示例#2
0
    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()
示例#3
0
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()
示例#4
0
    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)
示例#5
0
 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)
示例#7
0
# test for xml.dom.minidom