1
from __future__ import absolute_import, division, unicode_literals
3
from xml.dom import Node
8
class TreeWalker(base.NonRecursiveTreeWalker):
9
def getNodeDetails(self, node):
10
if node.nodeType == Node.DOCUMENT_TYPE_NODE:
11
return base.DOCTYPE, node.name, node.publicId, node.systemId
13
elif node.nodeType in (Node.TEXT_NODE, Node.CDATA_SECTION_NODE):
14
return base.TEXT, node.nodeValue
16
elif node.nodeType == Node.ELEMENT_NODE:
18
for attr in list(node.attributes.keys()):
19
attr = node.getAttributeNode(attr)
21
attrs[(attr.namespaceURI, attr.localName)] = attr.value
23
attrs[(None, attr.name)] = attr.value
24
return (base.ELEMENT, node.namespaceURI, node.nodeName,
25
attrs, node.hasChildNodes())
27
elif node.nodeType == Node.COMMENT_NODE:
28
return base.COMMENT, node.nodeValue
30
elif node.nodeType in (Node.DOCUMENT_NODE, Node.DOCUMENT_FRAGMENT_NODE):
31
return (base.DOCUMENT,)
34
return base.UNKNOWN, node.nodeType
36
def getFirstChild(self, node):
37
return node.firstChild
39
def getNextSibling(self, node):
40
return node.nextSibling
42
def getParentNode(self, node):
43
return node.parentNode