17db96d56Sopenharmony_ci:mod:`xml.sax.saxutils` --- SAX Utilities 27db96d56Sopenharmony_ci========================================= 37db96d56Sopenharmony_ci 47db96d56Sopenharmony_ci.. module:: xml.sax.saxutils 57db96d56Sopenharmony_ci :synopsis: Convenience functions and classes for use with SAX. 67db96d56Sopenharmony_ci 77db96d56Sopenharmony_ci.. moduleauthor:: Lars Marius Garshol <larsga@garshol.priv.no> 87db96d56Sopenharmony_ci.. sectionauthor:: Martin v. Löwis <martin@v.loewis.de> 97db96d56Sopenharmony_ci 107db96d56Sopenharmony_ci**Source code:** :source:`Lib/xml/sax/saxutils.py` 117db96d56Sopenharmony_ci 127db96d56Sopenharmony_ci-------------- 137db96d56Sopenharmony_ci 147db96d56Sopenharmony_ciThe module :mod:`xml.sax.saxutils` contains a number of classes and functions 157db96d56Sopenharmony_cithat are commonly useful when creating SAX applications, either in direct use, 167db96d56Sopenharmony_cior as base classes. 177db96d56Sopenharmony_ci 187db96d56Sopenharmony_ci 197db96d56Sopenharmony_ci.. function:: escape(data, entities={}) 207db96d56Sopenharmony_ci 217db96d56Sopenharmony_ci Escape ``'&'``, ``'<'``, and ``'>'`` in a string of data. 227db96d56Sopenharmony_ci 237db96d56Sopenharmony_ci You can escape other strings of data by passing a dictionary as the optional 247db96d56Sopenharmony_ci *entities* parameter. The keys and values must all be strings; each key will be 257db96d56Sopenharmony_ci replaced with its corresponding value. The characters ``'&'``, ``'<'`` and 267db96d56Sopenharmony_ci ``'>'`` are always escaped, even if *entities* is provided. 277db96d56Sopenharmony_ci 287db96d56Sopenharmony_ci 297db96d56Sopenharmony_ci.. function:: unescape(data, entities={}) 307db96d56Sopenharmony_ci 317db96d56Sopenharmony_ci Unescape ``'&'``, ``'<'``, and ``'>'`` in a string of data. 327db96d56Sopenharmony_ci 337db96d56Sopenharmony_ci You can unescape other strings of data by passing a dictionary as the optional 347db96d56Sopenharmony_ci *entities* parameter. The keys and values must all be strings; each key will be 357db96d56Sopenharmony_ci replaced with its corresponding value. ``'&'``, ``'<'``, and ``'>'`` 367db96d56Sopenharmony_ci are always unescaped, even if *entities* is provided. 377db96d56Sopenharmony_ci 387db96d56Sopenharmony_ci 397db96d56Sopenharmony_ci.. function:: quoteattr(data, entities={}) 407db96d56Sopenharmony_ci 417db96d56Sopenharmony_ci Similar to :func:`escape`, but also prepares *data* to be used as an 427db96d56Sopenharmony_ci attribute value. The return value is a quoted version of *data* with any 437db96d56Sopenharmony_ci additional required replacements. :func:`quoteattr` will select a quote 447db96d56Sopenharmony_ci character based on the content of *data*, attempting to avoid encoding any 457db96d56Sopenharmony_ci quote characters in the string. If both single- and double-quote characters 467db96d56Sopenharmony_ci are already in *data*, the double-quote characters will be encoded and *data* 477db96d56Sopenharmony_ci will be wrapped in double-quotes. The resulting string can be used directly 487db96d56Sopenharmony_ci as an attribute value:: 497db96d56Sopenharmony_ci 507db96d56Sopenharmony_ci >>> print("<element attr=%s>" % quoteattr("ab ' cd \" ef")) 517db96d56Sopenharmony_ci <element attr="ab ' cd " ef"> 527db96d56Sopenharmony_ci 537db96d56Sopenharmony_ci This function is useful when generating attribute values for HTML or any SGML 547db96d56Sopenharmony_ci using the reference concrete syntax. 557db96d56Sopenharmony_ci 567db96d56Sopenharmony_ci 577db96d56Sopenharmony_ci.. class:: XMLGenerator(out=None, encoding='iso-8859-1', short_empty_elements=False) 587db96d56Sopenharmony_ci 597db96d56Sopenharmony_ci This class implements the :class:`~xml.sax.handler.ContentHandler` interface 607db96d56Sopenharmony_ci by writing SAX 617db96d56Sopenharmony_ci events back into an XML document. In other words, using an :class:`XMLGenerator` 627db96d56Sopenharmony_ci as the content handler will reproduce the original document being parsed. *out* 637db96d56Sopenharmony_ci should be a file-like object which will default to *sys.stdout*. *encoding* is 647db96d56Sopenharmony_ci the encoding of the output stream which defaults to ``'iso-8859-1'``. 657db96d56Sopenharmony_ci *short_empty_elements* controls the formatting of elements that contain no 667db96d56Sopenharmony_ci content: if ``False`` (the default) they are emitted as a pair of start/end 677db96d56Sopenharmony_ci tags, if set to ``True`` they are emitted as a single self-closed tag. 687db96d56Sopenharmony_ci 697db96d56Sopenharmony_ci .. versionadded:: 3.2 707db96d56Sopenharmony_ci The *short_empty_elements* parameter. 717db96d56Sopenharmony_ci 727db96d56Sopenharmony_ci 737db96d56Sopenharmony_ci.. class:: XMLFilterBase(base) 747db96d56Sopenharmony_ci 757db96d56Sopenharmony_ci This class is designed to sit between an 767db96d56Sopenharmony_ci :class:`~xml.sax.xmlreader.XMLReader` and the client 777db96d56Sopenharmony_ci application's event handlers. By default, it does nothing but pass requests up 787db96d56Sopenharmony_ci to the reader and events on to the handlers unmodified, but subclasses can 797db96d56Sopenharmony_ci override specific methods to modify the event stream or the configuration 807db96d56Sopenharmony_ci requests as they pass through. 817db96d56Sopenharmony_ci 827db96d56Sopenharmony_ci 837db96d56Sopenharmony_ci.. function:: prepare_input_source(source, base='') 847db96d56Sopenharmony_ci 857db96d56Sopenharmony_ci This function takes an input source and an optional base URL and returns a 867db96d56Sopenharmony_ci fully resolved :class:`~xml.sax.xmlreader.InputSource` object ready for 877db96d56Sopenharmony_ci reading. The input source can be given as a string, a file-like object, or 887db96d56Sopenharmony_ci an :class:`~xml.sax.xmlreader.InputSource` object; parsers will use this 897db96d56Sopenharmony_ci function to implement the polymorphic *source* argument to their 907db96d56Sopenharmony_ci :meth:`parse` method. 917db96d56Sopenharmony_ci 92