MCPcopy Index your code
hub / github.com/ronreiter/interactive-tutorials / Handler

Class Handler

suds/sax/parser.py:42–101  ·  view source on GitHub ↗

sax hanlder

Source from the content-addressed store, hash-verified

40
41
42class Handler(ContentHandler):
43 """ sax hanlder """
44
45 def __init__(self):
46 self.nodes = [Document()]
47
48 def startElement(self, name, attrs):
49 top = self.top()
50 node = Element(unicode(name), parent=top)
51 for a in attrs.getNames():
52 n = unicode(a)
53 v = unicode(attrs.getValue(a))
54 attribute = Attribute(n, v)
55 if self.mapPrefix(node, attribute):
56 continue
57 node.append(attribute)
58 node.charbuffer = []
59 top.append(node)
60 self.push(node)
61
62 def mapPrefix(self, node, attribute):
63 skip = False
64 if attribute.name == 'xmlns':
65 if len(attribute.value):
66 node.expns = unicode(attribute.value)
67 skip = True
68 elif attribute.prefix == 'xmlns':
69 prefix = attribute.name
70 node.nsprefixes[prefix] = unicode(attribute.value)
71 skip = True
72 return skip
73
74 def endElement(self, name):
75 name = unicode(name)
76 current = self.top()
77 if len(current.charbuffer):
78 current.text = Text(u''.join(current.charbuffer))
79 del current.charbuffer
80 if len(current):
81 current.trim()
82 currentqname = current.qname()
83 if name == currentqname:
84 self.pop()
85 else:
86 raise Exception('malformed document')
87
88 def characters(self, content):
89 text = unicode(content)
90 node = self.top()
91 node.charbuffer.append(text)
92
93 def push(self, node):
94 self.nodes.append(node)
95 return node
96
97 def pop(self):
98 return self.nodes.pop()
99

Callers 1

saxparserMethod · 0.85

Calls

no outgoing calls

Tested by

no test coverage detected