symbian-qemu-0.9.1-12/python-win32-2.6.1/lib/xml/sax/__init__.py
changeset 1 2fb8b9db1c86
equal deleted inserted replaced
0:ffa851df0825 1:2fb8b9db1c86
       
     1 """Simple API for XML (SAX) implementation for Python.
       
     2 
       
     3 This module provides an implementation of the SAX 2 interface;
       
     4 information about the Java version of the interface can be found at
       
     5 http://www.megginson.com/SAX/.  The Python version of the interface is
       
     6 documented at <...>.
       
     7 
       
     8 This package contains the following modules:
       
     9 
       
    10 handler -- Base classes and constants which define the SAX 2 API for
       
    11            the 'client-side' of SAX for Python.
       
    12 
       
    13 saxutils -- Implementation of the convenience classes commonly used to
       
    14             work with SAX.
       
    15 
       
    16 xmlreader -- Base classes and constants which define the SAX 2 API for
       
    17              the parsers used with SAX for Python.
       
    18 
       
    19 expatreader -- Driver that allows use of the Expat parser with SAX.
       
    20 """
       
    21 
       
    22 from xmlreader import InputSource
       
    23 from handler import ContentHandler, ErrorHandler
       
    24 from _exceptions import SAXException, SAXNotRecognizedException, \
       
    25                         SAXParseException, SAXNotSupportedException, \
       
    26                         SAXReaderNotAvailable
       
    27 
       
    28 
       
    29 def parse(source, handler, errorHandler=ErrorHandler()):
       
    30     parser = make_parser()
       
    31     parser.setContentHandler(handler)
       
    32     parser.setErrorHandler(errorHandler)
       
    33     parser.parse(source)
       
    34 
       
    35 def parseString(string, handler, errorHandler=ErrorHandler()):
       
    36     try:
       
    37         from cStringIO import StringIO
       
    38     except ImportError:
       
    39         from StringIO import StringIO
       
    40 
       
    41     if errorHandler is None:
       
    42         errorHandler = ErrorHandler()
       
    43     parser = make_parser()
       
    44     parser.setContentHandler(handler)
       
    45     parser.setErrorHandler(errorHandler)
       
    46 
       
    47     inpsrc = InputSource()
       
    48     inpsrc.setByteStream(StringIO(string))
       
    49     parser.parse(inpsrc)
       
    50 
       
    51 # this is the parser list used by the make_parser function if no
       
    52 # alternatives are given as parameters to the function
       
    53 
       
    54 default_parser_list = ["xml.sax.expatreader"]
       
    55 
       
    56 # tell modulefinder that importing sax potentially imports expatreader
       
    57 _false = 0
       
    58 if _false:
       
    59     import xml.sax.expatreader
       
    60 
       
    61 import os, sys
       
    62 if os.environ.has_key("PY_SAX_PARSER"):
       
    63     default_parser_list = os.environ["PY_SAX_PARSER"].split(",")
       
    64 del os
       
    65 
       
    66 _key = "python.xml.sax.parser"
       
    67 if sys.platform[:4] == "java" and sys.registry.containsKey(_key):
       
    68     default_parser_list = sys.registry.getProperty(_key).split(",")
       
    69 
       
    70 
       
    71 def make_parser(parser_list = []):
       
    72     """Creates and returns a SAX parser.
       
    73 
       
    74     Creates the first parser it is able to instantiate of the ones
       
    75     given in the list created by doing parser_list +
       
    76     default_parser_list.  The lists must contain the names of Python
       
    77     modules containing both a SAX parser and a create_parser function."""
       
    78 
       
    79     for parser_name in parser_list + default_parser_list:
       
    80         try:
       
    81             return _create_parser(parser_name)
       
    82         except ImportError,e:
       
    83             import sys
       
    84             if parser_name in sys.modules:
       
    85                 # The parser module was found, but importing it
       
    86                 # failed unexpectedly, pass this exception through
       
    87                 raise
       
    88         except SAXReaderNotAvailable:
       
    89             # The parser module detected that it won't work properly,
       
    90             # so try the next one
       
    91             pass
       
    92 
       
    93     raise SAXReaderNotAvailable("No parsers found", None)
       
    94 
       
    95 # --- Internal utility methods used by make_parser
       
    96 
       
    97 if sys.platform[ : 4] == "java":
       
    98     def _create_parser(parser_name):
       
    99         from org.python.core import imp
       
   100         drv_module = imp.importName(parser_name, 0, globals())
       
   101         return drv_module.create_parser()
       
   102 
       
   103 else:
       
   104     def _create_parser(parser_name):
       
   105         drv_module = __import__(parser_name,{},{},['create_parser'])
       
   106         return drv_module.create_parser()
       
   107 
       
   108 del sys