home *** CD-ROM | disk | FTP | other *** search
/ Mac Easy 2010 May / Mac Life Ubuntu.iso / casper / filesystem.squashfs / usr / share / python-support / python-rdflib / rdflib / syntax / parsers / RDFXMLParser.py < prev    next >
Encoding:
Python Source  |  2007-04-04  |  1.2 KB  |  41 lines

  1. from rdflib.syntax.parsers import Parser
  2.  
  3. from xml.sax import make_parser
  4. from xml.sax.saxutils import handler
  5. from xml.sax.handler import ErrorHandler
  6.  
  7. from rdflib.syntax.parsers.RDFXMLHandler import RDFXMLHandler
  8.  
  9.  
  10. def create_parser(store):
  11.     parser = make_parser()
  12.     # Workaround for bug in expatreader.py. Needed when
  13.     # expatreader is trying to guess a prefix.
  14.     parser.start_namespace_decl("xml", "http://www.w3.org/XML/1998/namespace")
  15.     parser.setFeature(handler.feature_namespaces, 1)
  16.     rdfxml = RDFXMLHandler(store)
  17.     #rdfxml.setDocumentLocator(_Locator(self.url, self.parser))
  18.     parser.setContentHandler(rdfxml)
  19.     parser.setErrorHandler(ErrorHandler())
  20.     return parser
  21.  
  22.  
  23. class RDFXMLParser(Parser):
  24.  
  25.     def __init__(self):
  26.         pass
  27.  
  28.     def parse(self, source, sink, **args):
  29.         self._parser = create_parser(sink)
  30.         content_handler = self._parser.getContentHandler()
  31.         preserve_bnode_ids = args.get("preserve_bnode_ids", None)
  32.         if preserve_bnode_ids is not None:
  33.             content_handler.preserve_bnode_ids = preserve_bnode_ids
  34.         # We're only using it once now
  35.         #content_handler.reset()
  36.         #self._parser.reset()
  37.         self._parser.parse(source)
  38.  
  39.  
  40.  
  41.