| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | :mod:`xml.sax` --- Support for SAX2 parsers
 | 
					
						
							|  |  |  | ===========================================
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. module:: xml.sax
 | 
					
						
							|  |  |  |    :synopsis: Package containing SAX2 base classes and convenience functions.
 | 
					
						
							|  |  |  | .. moduleauthor:: Lars Marius Garshol <larsga@garshol.priv.no>
 | 
					
						
							|  |  |  | .. sectionauthor:: Fred L. Drake, Jr. <fdrake@acm.org>
 | 
					
						
							|  |  |  | .. sectionauthor:: Martin v. Löwis <martin@v.loewis.de>
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The :mod:`xml.sax` package provides a number of modules which implement the
 | 
					
						
							|  |  |  | Simple API for XML (SAX) interface for Python.  The package itself provides the
 | 
					
						
							|  |  |  | SAX exceptions and the convenience functions which will be most used by users of
 | 
					
						
							|  |  |  | the SAX API.
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-03-26 17:35:55 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  | .. warning::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    The :mod:`xml.sax` module is not secure against maliciously
 | 
					
						
							|  |  |  |    constructed data.  If you need to parse untrusted or unauthenticated data see
 | 
					
						
							|  |  |  |    :ref:`xml-vulnerabilities`.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | The convenience functions are:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-16 15:58:14 +00:00
										 |  |  | .. function:: make_parser(parser_list=[])
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-29 10:28:44 +03:00
										 |  |  |    Create and return a SAX :class:`~xml.sax.xmlreader.XMLReader` object.  The
 | 
					
						
							|  |  |  |    first parser found will
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |    be used.  If *parser_list* is provided, it must be a sequence of strings which
 | 
					
						
							|  |  |  |    name modules that have a function named :func:`create_parser`.  Modules listed
 | 
					
						
							|  |  |  |    in *parser_list* will be used before modules in the default list of parsers.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-16 15:58:14 +00:00
										 |  |  | .. function:: parse(filename_or_stream, handler, error_handler=handler.ErrorHandler())
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Create a SAX parser and use it to parse a document.  The document, passed in as
 | 
					
						
							|  |  |  |    *filename_or_stream*, can be a filename or a file object.  The *handler*
 | 
					
						
							| 
									
										
										
										
											2013-08-29 10:28:44 +03:00
										 |  |  |    parameter needs to be a SAX :class:`~handler.ContentHandler` instance.  If
 | 
					
						
							|  |  |  |    *error_handler* is given, it must be a SAX :class:`~handler.ErrorHandler`
 | 
					
						
							|  |  |  |    instance; if
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |    omitted,  :exc:`SAXParseException` will be raised on all errors.  There is no
 | 
					
						
							|  |  |  |    return value; all work must be done by the *handler* passed in.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-16 15:58:14 +00:00
										 |  |  | .. function:: parseString(string, handler, error_handler=handler.ErrorHandler())
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Similar to :func:`parse`, but parses from a buffer *string* received as a
 | 
					
						
							|  |  |  |    parameter.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | A typical SAX application uses three kinds of objects: readers, handlers and
 | 
					
						
							|  |  |  | input sources.  "Reader" in this context is another term for parser, i.e. some
 | 
					
						
							|  |  |  | piece of code that reads the bytes or characters from the input source, and
 | 
					
						
							|  |  |  | produces a sequence of events. The events then get distributed to the handler
 | 
					
						
							|  |  |  | objects, i.e. the reader invokes a method on the handler.  A SAX application
 | 
					
						
							|  |  |  | must therefore obtain a reader object, create or open the input sources, create
 | 
					
						
							|  |  |  | the handlers, and connect these objects all together.  As the final step of
 | 
					
						
							|  |  |  | preparation, the reader is called to parse the input. During parsing, methods on
 | 
					
						
							|  |  |  | the handler objects are called based on structural and syntactic events from the
 | 
					
						
							|  |  |  | input data.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | For these objects, only the interfaces are relevant; they are normally not
 | 
					
						
							|  |  |  | instantiated by the application itself.  Since Python does not have an explicit
 | 
					
						
							|  |  |  | notion of interface, they are formally introduced as classes, but applications
 | 
					
						
							|  |  |  | may use implementations which do not inherit from the provided classes.  The
 | 
					
						
							| 
									
										
										
										
											2013-08-29 10:28:44 +03:00
										 |  |  | :class:`~xml.sax.xmlreader.InputSource`, :class:`~xml.sax.xmlreader.Locator`,
 | 
					
						
							|  |  |  | :class:`~xml.sax.xmlreader.Attributes`, :class:`~xml.sax.xmlreader.AttributesNS`,
 | 
					
						
							|  |  |  | and :class:`~xml.sax.xmlreader.XMLReader` interfaces are defined in the
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | module :mod:`xml.sax.xmlreader`.  The handler interfaces are defined in
 | 
					
						
							| 
									
										
										
										
											2013-08-29 10:28:44 +03:00
										 |  |  | :mod:`xml.sax.handler`.  For convenience,
 | 
					
						
							|  |  |  | :class:`~xml.sax.xmlreader.InputSource` (which is often
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | instantiated directly) and the handler classes are also available from
 | 
					
						
							|  |  |  | :mod:`xml.sax`.  These interfaces are described below.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | In addition to these classes, :mod:`xml.sax` provides the following exception
 | 
					
						
							|  |  |  | classes.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-16 15:58:14 +00:00
										 |  |  | .. exception:: SAXException(msg, exception=None)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  |    Encapsulate an XML error or warning.  This class can contain basic error or
 | 
					
						
							|  |  |  |    warning information from either the XML parser or the application: it can be
 | 
					
						
							|  |  |  |    subclassed to provide additional functionality or to add localization.  Note
 | 
					
						
							| 
									
										
										
										
											2013-08-29 10:28:44 +03:00
										 |  |  |    that although the handlers defined in the
 | 
					
						
							|  |  |  |    :class:`~xml.sax.handler.ErrorHandler` interface
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |    receive instances of this exception, it is not required to actually raise the
 | 
					
						
							|  |  |  |    exception --- it is also useful as a container for information.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    When instantiated, *msg* should be a human-readable description of the error.
 | 
					
						
							|  |  |  |    The optional *exception* parameter, if given, should be ``None`` or an exception
 | 
					
						
							|  |  |  |    that was caught by the parsing code and is being passed along as information.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    This is the base class for the other SAX exception classes.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. exception:: SAXParseException(msg, exception, locator)
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-29 10:28:44 +03:00
										 |  |  |    Subclass of :exc:`SAXException` raised on parse errors. Instances of this
 | 
					
						
							|  |  |  |    class are passed to the methods of the SAX
 | 
					
						
							|  |  |  |    :class:`~xml.sax.handler.ErrorHandler` interface to provide information
 | 
					
						
							|  |  |  |    about the parse error.  This class supports the SAX
 | 
					
						
							|  |  |  |    :class:`~xml.sax.xmlreader.Locator` interface as well as the
 | 
					
						
							|  |  |  |    :class:`SAXException` interface.
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-16 15:58:14 +00:00
										 |  |  | .. exception:: SAXNotRecognizedException(msg, exception=None)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-29 10:28:44 +03:00
										 |  |  |    Subclass of :exc:`SAXException` raised when a SAX
 | 
					
						
							|  |  |  |    :class:`~xml.sax.xmlreader.XMLReader` is
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |    confronted with an unrecognized feature or property.  SAX applications and
 | 
					
						
							|  |  |  |    extensions may use this class for similar purposes.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2009-09-16 15:58:14 +00:00
										 |  |  | .. exception:: SAXNotSupportedException(msg, exception=None)
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2013-08-29 10:28:44 +03:00
										 |  |  |    Subclass of :exc:`SAXException` raised when a SAX
 | 
					
						
							|  |  |  |    :class:`~xml.sax.xmlreader.XMLReader` is asked to
 | 
					
						
							| 
									
										
										
										
											2007-08-15 14:28:22 +00:00
										 |  |  |    enable a feature that is not supported, or to set a property to a value that the
 | 
					
						
							|  |  |  |    implementation does not support.  SAX applications and extensions may use this
 | 
					
						
							|  |  |  |    class for similar purposes.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. seealso::
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    `SAX: The Simple API for XML <http://www.saxproject.org/>`_
 | 
					
						
							|  |  |  |       This site is the focal point for the definition of the SAX API.  It provides a
 | 
					
						
							|  |  |  |       Java implementation and online documentation.  Links to implementations and
 | 
					
						
							|  |  |  |       historical information are also available.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Module :mod:`xml.sax.handler`
 | 
					
						
							|  |  |  |       Definitions of the interfaces for application-provided objects.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Module :mod:`xml.sax.saxutils`
 | 
					
						
							|  |  |  |       Convenience functions for use in SAX applications.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Module :mod:`xml.sax.xmlreader`
 | 
					
						
							|  |  |  |       Definitions of the interfaces for parser-provided objects.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. _sax-exception-objects:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | SAXException Objects
 | 
					
						
							|  |  |  | --------------------
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | The :class:`SAXException` exception class supports the following methods:
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. method:: SAXException.getMessage()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Return a human-readable message describing the error condition.
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | .. method:: SAXException.getException()
 | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |    Return an encapsulated exception object, or ``None``.
 | 
					
						
							|  |  |  | 
 |