def parse(source, handler, errorHandler=ErrorHandler()):
- parser = ExpatParser()
+ parser = make_parser()
parser.setContentHandler(handler)
parser.setErrorHandler(errorHandler)
parser.parse(source)
if errorHandler is None:
errorHandler = ErrorHandler()
- parser = ExpatParser()
+ parser = make_parser()
parser.setContentHandler(handler)
parser.setErrorHandler(errorHandler)
return drv_module.create_parser()
else:
- import imp as _imp
-
- def _rec_find_module(module):
- "Improvement over imp.find_module which finds submodules."
- path=""
- for mod in string.split(module,"."):
- if path == "":
- info = (mod,) + _imp.find_module(mod)
- else:
- info = (mod,) + _imp.find_module(mod, [path])
-
- lastmod = _imp.load_module(*info)
-
- try:
- path = lastmod.__path__[0]
- except AttributeError, e:
- pass
-
- return info
-
def _create_parser(parser_name):
- info = _rec_find_module(parser_name)
- drv_module = _imp.load_module(*info)
+ drv_module = __import__(parser_name,{},{},['create_parser'])
return drv_module.create_parser()
del sys
convenience of application and driver writers.
"""
-import os, urlparse, urllib
+import os, urlparse, urllib, types
import handler
import xmlreader
+_StringTypes = [types.StringType, types.UnicodeType]
+
def escape(data, entities={}):
"""Escape &, <, and > in a string of data.
"""This function takes an InputSource and an optional base URL and
returns a fully resolved InputSource object ready for reading."""
- if type(source) == type(""):
+ if type(source) in _StringTypes:
+ source = xmlreader.InputSource(source)
+ elif hasattr(source, "read"):
+ f = source
source = xmlreader.InputSource(source)
+ source.setByteStream(f)
if source.getByteStream() == None:
sysid = source.getSystemId()