]> git.proxmox.com Git - mirror_edk2.git/blob - AppPkg/Applications/Python/Python-2.7.10/Lib/xml/sax/__init__.py
AppPkg/Applications/Python/Python-2.7.10: Initial Checkin part 4/5.
[mirror_edk2.git] / AppPkg / Applications / Python / Python-2.7.10 / Lib / xml / sax / __init__.py
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 "PY_SAX_PARSER" in os.environ:
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