aboutsummaryrefslogtreecommitdiff
path: root/scripts/rpki/sax_utils.py
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/rpki/sax_utils.py')
-rw-r--r--scripts/rpki/sax_utils.py38
1 files changed, 38 insertions, 0 deletions
diff --git a/scripts/rpki/sax_utils.py b/scripts/rpki/sax_utils.py
new file mode 100644
index 00000000..b4259d2a
--- /dev/null
+++ b/scripts/rpki/sax_utils.py
@@ -0,0 +1,38 @@
+# $Id$
+
+import xml.sax
+
+def snarf(obj, attrs, key, func=None):
+ """
+ Utility function to consolidate the steps needed to extract a field
+ from the SAX XML parse and insert it as an object attribute of the
+ same name.
+ """
+
+ try:
+ val = attrs.getValue(key).encode("ascii")
+ if func:
+ val = func(val)
+ except KeyError:
+ val = None
+ setattr(obj, key, val)
+
+class handler(xml.sax.handler.ContentHandler):
+ """
+ SAX handler for RPKI protocols. Handles a few tasks
+ common to all of these protocols, needs to be subtyped
+ to handle protocol-specific details.
+ """
+
+ def __init__(self):
+ self.text = ""
+ self.obj = None
+
+ 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