Skip to content
Projects
Groups
Snippets
Help
Loading...
Help
Support
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
C
cpython
Project overview
Project overview
Details
Activity
Releases
Repository
Repository
Files
Commits
Branches
Tags
Contributors
Graph
Compare
Issues
0
Issues
0
List
Boards
Labels
Milestones
Merge Requests
0
Merge Requests
0
Analytics
Analytics
Repository
Value Stream
Wiki
Wiki
Members
Members
Collapse sidebar
Close sidebar
Activity
Graph
Create a new issue
Commits
Issue Boards
Open sidebar
Kirill Smelkov
cpython
Commits
ae43e520
Commit
ae43e520
authored
Sep 21, 2000
by
Lars Gustäbel
Browse files
Options
Browse Files
Download
Email Patches
Plain Diff
Added the make_parser function (patch 101571).
parent
c5cec51b
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
with
67 additions
and
2 deletions
+67
-2
Lib/xml/sax/__init__.py
Lib/xml/sax/__init__.py
+67
-2
No files found.
Lib/xml/sax/__init__.py
View file @
ae43e520
...
...
@@ -22,7 +22,6 @@ expatreader -- Driver that allows use of the Expat parser with the
"""
from
handler
import
ContentHandler
,
ErrorHandler
from
expatreader
import
ExpatParser
from
_exceptions
import
SAXException
,
SAXNotRecognizedException
,
\
SAXParseException
,
SAXNotSupportedException
...
...
@@ -33,7 +32,6 @@ def parse(filename_or_stream, handler, errorHandler=ErrorHandler()):
parser
.
setErrorHandler
(
errorHandler
)
parser
.
parse
(
filename_or_stream
)
def
parseString
(
string
,
handler
,
errorHandler
=
ErrorHandler
()):
try
:
from
cStringIO
import
StringIO
...
...
@@ -46,3 +44,70 @@ def parseString(string, handler, errorHandler=ErrorHandler()):
parser
.
setContentHandler
(
handler
)
parser
.
setErrorHandler
(
errorHandler
)
parser
.
parse
(
StringIO
(
string
))
# this is the parser list used by the make_parser function if no
# alternatives are given as parameters to the function
default_parser_list
=
[
"xml.sax.expatreader"
]
import
os
,
string
,
sys
if
os
.
environ
.
has_key
(
"PY_SAX_PARSER"
):
default_parser_list
=
string
.
split
(
os
.
environ
[
"PY_SAX_PARSER"
],
","
)
del
os
_key
=
"python.xml.sax.parser"
if
sys
.
platform
[:
4
]
==
"java"
and
sys
.
registry
.
containsKey
(
_key
):
default_parser_list
=
string
.
split
(
sys
.
registry
.
getProperty
(
_key
),
","
)
def
make_parser
(
parser_list
=
[]):
"""Creates and returns a SAX parser.
Creates the first parser it is able to instantiate of the ones
given in the list created by doing parser_list +
default_parser_list. The lists must contain the names of Python
modules containing both a SAX parser and a create_parser function."""
for
parser_name
in
parser_list
+
default_parser_list
:
try
:
return
_create_parser
(
parser_name
)
except
ImportError
,
e
:
pass
raise
SAXException
(
"No parsers found"
,
None
)
# --- Internal utility methods used by make_parser
if
sys
.
platform
[
:
4
]
==
"java"
:
def
_create_parser
(
parser_name
):
from
org.python.core
import
imp
drv_module
=
imp
.
importName
(
parser_name
,
0
,
globals
())
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
=
apply
(
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
=
apply
(
imp
.
load_module
,
info
)
return
drv_module
.
create_parser
()
del
sys
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment