1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
|
# $Id$
import xml.sax
class handler(xml.sax.handler.ContentHandler):
"""
SAX handler for RPKI protocols.
"""
def __init__(self):
self.text = ""
self.stack = []
def startElementNS(self, name, qname, attrs):
return self.startElement(name[1], attrs)
def endElementNS(self, name, qname):
return self.endElement(name[1])
def characters(self, content):
self.text += content
def startElement(self, name, attrs):
a = dict()
for k,v in attrs.items():
if isinstance(k, tuple):
if k == ('http://www.w3.org/XML/1998/namespace', 'lang'):
k = "xml:lang"
else:
assert k[0] is None
k = k[1]
a[k.encode("ascii")] = v.encode("ascii")
if len(self.stack) == 0:
assert not hasattr(self, "result")
self.result = self.create_top_level(name, a)
self.stack.append(self.result)
self.stack[-1].startElement(self.stack, name, a)
def endElement(self, name):
text = self.text.encode("ascii").strip()
self.text = ""
self.stack[-1].endElement(self.stack, name, text)
|