diff options
author | Rob Austein <sra@hactrn.net> | 2007-07-11 18:15:42 +0000 |
---|---|---|
committer | Rob Austein <sra@hactrn.net> | 2007-07-11 18:15:42 +0000 |
commit | 290374ca89c59d1f92290bf70cfd8715896d990e (patch) | |
tree | 70ac0693a5adea7d6f10f9dad40cd61b3dd28bb9 /scripts/rpki/sax_utils.py | |
parent | 26f34227a333db277f99aa67f038fa7174c6369f (diff) |
Checkpoint
svn path=/scripts/rpki/sax_handler.py; revision=751
Diffstat (limited to 'scripts/rpki/sax_utils.py')
-rw-r--r-- | scripts/rpki/sax_utils.py | 38 |
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 |