mirror of https://github.com/python/cpython
97 lines
4.0 KiB
ReStructuredText
97 lines
4.0 KiB
ReStructuredText
:mod:`xml.sax.saxutils` --- SAX Utilities
|
|
=========================================
|
|
|
|
.. module:: xml.sax.saxutils
|
|
:synopsis: Convenience functions and classes for use with SAX.
|
|
|
|
.. moduleauthor:: Lars Marius Garshol <larsga@garshol.priv.no>
|
|
.. sectionauthor:: Martin v. Löwis <martin@v.loewis.de>
|
|
|
|
**Source code:** :source:`Lib/xml/sax/saxutils.py`
|
|
|
|
--------------
|
|
|
|
The module :mod:`xml.sax.saxutils` contains a number of classes and functions
|
|
that are commonly useful when creating SAX applications, either in direct use,
|
|
or as base classes.
|
|
|
|
|
|
.. function:: escape(data, entities={})
|
|
|
|
Escape ``'&'``, ``'<'``, and ``'>'`` in a string of data.
|
|
|
|
You can escape other strings of data by passing a dictionary as the optional
|
|
*entities* parameter. The keys and values must all be strings; each key will be
|
|
replaced with its corresponding value. The characters ``'&'``, ``'<'`` and
|
|
``'>'`` are always escaped, even if *entities* is provided.
|
|
|
|
.. note::
|
|
|
|
This function should only be used to escape characters that
|
|
can't be used directly in XML. Do not use this function as a general
|
|
string translation function.
|
|
|
|
.. function:: unescape(data, entities={})
|
|
|
|
Unescape ``'&'``, ``'<'``, and ``'>'`` in a string of data.
|
|
|
|
You can unescape other strings of data by passing a dictionary as the optional
|
|
*entities* parameter. The keys and values must all be strings; each key will be
|
|
replaced with its corresponding value. ``'&'``, ``'<'``, and ``'>'``
|
|
are always unescaped, even if *entities* is provided.
|
|
|
|
|
|
.. function:: quoteattr(data, entities={})
|
|
|
|
Similar to :func:`escape`, but also prepares *data* to be used as an
|
|
attribute value. The return value is a quoted version of *data* with any
|
|
additional required replacements. :func:`quoteattr` will select a quote
|
|
character based on the content of *data*, attempting to avoid encoding any
|
|
quote characters in the string. If both single- and double-quote characters
|
|
are already in *data*, the double-quote characters will be encoded and *data*
|
|
will be wrapped in double-quotes. The resulting string can be used directly
|
|
as an attribute value::
|
|
|
|
>>> print("<element attr=%s>" % quoteattr("ab ' cd \" ef"))
|
|
<element attr="ab ' cd " ef">
|
|
|
|
This function is useful when generating attribute values for HTML or any SGML
|
|
using the reference concrete syntax.
|
|
|
|
|
|
.. class:: XMLGenerator(out=None, encoding='iso-8859-1', short_empty_elements=False)
|
|
|
|
This class implements the :class:`~xml.sax.handler.ContentHandler` interface
|
|
by writing SAX
|
|
events back into an XML document. In other words, using an :class:`XMLGenerator`
|
|
as the content handler will reproduce the original document being parsed. *out*
|
|
should be a file-like object which will default to *sys.stdout*. *encoding* is
|
|
the encoding of the output stream which defaults to ``'iso-8859-1'``.
|
|
*short_empty_elements* controls the formatting of elements that contain no
|
|
content: if ``False`` (the default) they are emitted as a pair of start/end
|
|
tags, if set to ``True`` they are emitted as a single self-closed tag.
|
|
|
|
.. versionadded:: 3.2
|
|
The *short_empty_elements* parameter.
|
|
|
|
|
|
.. class:: XMLFilterBase(base)
|
|
|
|
This class is designed to sit between an
|
|
:class:`~xml.sax.xmlreader.XMLReader` and the client
|
|
application's event handlers. By default, it does nothing but pass requests up
|
|
to the reader and events on to the handlers unmodified, but subclasses can
|
|
override specific methods to modify the event stream or the configuration
|
|
requests as they pass through.
|
|
|
|
|
|
.. function:: prepare_input_source(source, base='')
|
|
|
|
This function takes an input source and an optional base URL and returns a
|
|
fully resolved :class:`~xml.sax.xmlreader.InputSource` object ready for
|
|
reading. The input source can be given as a string, a file-like object, or
|
|
an :class:`~xml.sax.xmlreader.InputSource` object; parsers will use this
|
|
function to implement the polymorphic *source* argument to their
|
|
:meth:`~xml.sax.xmlreader.XMLReader.parse` method.
|
|
|