<!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <meta charset="utf-8" /> <title>xml.sax.saxutils — SAX Utilities — Python 3.7.4 documentation</title> <link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" /> <link rel="stylesheet" href="../_static/pygments.css" type="text/css" /> <script type="text/javascript" id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script> <script type="text/javascript" src="../_static/jquery.js"></script> <script type="text/javascript" src="../_static/underscore.js"></script> <script type="text/javascript" src="../_static/doctools.js"></script> <script type="text/javascript" src="../_static/language_data.js"></script> <script type="text/javascript" src="../_static/sidebar.js"></script> <link rel="search" type="application/opensearchdescription+xml" title="Search within Python 3.7.4 documentation" href="../_static/opensearch.xml"/> <link rel="author" title="About these documents" href="../about.html" /> <link rel="index" title="Index" href="../genindex.html" /> <link rel="search" title="Search" href="../search.html" /> <link rel="copyright" title="Copyright" href="../copyright.html" /> <link rel="next" title="xml.sax.xmlreader — Interface for XML parsers" href="xml.sax.reader.html" /> <link rel="prev" title="xml.sax.handler — Base classes for SAX handlers" href="xml.sax.handler.html" /> <link rel="shortcut icon" type="image/png" href="../_static/py.png" /> <link rel="canonical" href="https://docs.python.org/3/library/xml.sax.utils.html" /> <script type="text/javascript" src="../_static/copybutton.js"></script> <script type="text/javascript" src="../_static/switchers.js"></script> <style> @media only screen { table.full-width-table { width: 100%; } } </style> </head><body> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" accesskey="I">index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="xml.sax.reader.html" title="xml.sax.xmlreader — Interface for XML parsers" accesskey="N">next</a> |</li> <li class="right" > <a href="xml.sax.handler.html" title="xml.sax.handler — Base classes for SAX handlers" accesskey="P">previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="https://www.python.org/">Python</a> »</li> <li> <span class="language_switcher_placeholder">en</span> <span class="version_switcher_placeholder">3.7.4</span> <a href="../index.html">Documentation </a> » </li> <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li> <li class="nav-item nav-item-2"><a href="markup.html" accesskey="U">Structured Markup Processing Tools</a> »</li> <li class="right"> <div class="inline-search" style="display: none" role="search"> <form class="inline-search" action="../search.html" method="get"> <input placeholder="Quick search" type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> <script type="text/javascript">$('.inline-search').show(0);</script> | </li> </ul> </div> <div class="document"> <div class="documentwrapper"> <div class="bodywrapper"> <div class="body" role="main"> <div class="section" id="module-xml.sax.saxutils"> <span id="xml-sax-saxutils-sax-utilities"></span><h1><a class="reference internal" href="#module-xml.sax.saxutils" title="xml.sax.saxutils: Convenience functions and classes for use with SAX."><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.saxutils</span></code></a> — SAX Utilities<a class="headerlink" href="#module-xml.sax.saxutils" title="Permalink to this headline">¶</a></h1> <p><strong>Source code:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.7/Lib/xml/sax/saxutils.py">Lib/xml/sax/saxutils.py</a></p> <hr class="docutils" /> <p>The module <a class="reference internal" href="#module-xml.sax.saxutils" title="xml.sax.saxutils: Convenience functions and classes for use with SAX."><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.saxutils</span></code></a> contains a number of classes and functions that are commonly useful when creating SAX applications, either in direct use, or as base classes.</p> <dl class="function"> <dt id="xml.sax.saxutils.escape"> <code class="descclassname">xml.sax.saxutils.</code><code class="descname">escape</code><span class="sig-paren">(</span><em>data</em>, <em>entities={}</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.saxutils.escape" title="Permalink to this definition">¶</a></dt> <dd><p>Escape <code class="docutils literal notranslate"><span class="pre">'&'</span></code>, <code class="docutils literal notranslate"><span class="pre">'<'</span></code>, and <code class="docutils literal notranslate"><span class="pre">'>'</span></code> in a string of data.</p> <p>You can escape other strings of data by passing a dictionary as the optional <em>entities</em> parameter. The keys and values must all be strings; each key will be replaced with its corresponding value. The characters <code class="docutils literal notranslate"><span class="pre">'&'</span></code>, <code class="docutils literal notranslate"><span class="pre">'<'</span></code> and <code class="docutils literal notranslate"><span class="pre">'>'</span></code> are always escaped, even if <em>entities</em> is provided.</p> </dd></dl> <dl class="function"> <dt id="xml.sax.saxutils.unescape"> <code class="descclassname">xml.sax.saxutils.</code><code class="descname">unescape</code><span class="sig-paren">(</span><em>data</em>, <em>entities={}</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.saxutils.unescape" title="Permalink to this definition">¶</a></dt> <dd><p>Unescape <code class="docutils literal notranslate"><span class="pre">'&amp;'</span></code>, <code class="docutils literal notranslate"><span class="pre">'&lt;'</span></code>, and <code class="docutils literal notranslate"><span class="pre">'&gt;'</span></code> in a string of data.</p> <p>You can unescape other strings of data by passing a dictionary as the optional <em>entities</em> parameter. The keys and values must all be strings; each key will be replaced with its corresponding value. <code class="docutils literal notranslate"><span class="pre">'&amp'</span></code>, <code class="docutils literal notranslate"><span class="pre">'&lt;'</span></code>, and <code class="docutils literal notranslate"><span class="pre">'&gt;'</span></code> are always unescaped, even if <em>entities</em> is provided.</p> </dd></dl> <dl class="function"> <dt id="xml.sax.saxutils.quoteattr"> <code class="descclassname">xml.sax.saxutils.</code><code class="descname">quoteattr</code><span class="sig-paren">(</span><em>data</em>, <em>entities={}</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.saxutils.quoteattr" title="Permalink to this definition">¶</a></dt> <dd><p>Similar to <a class="reference internal" href="#xml.sax.saxutils.escape" title="xml.sax.saxutils.escape"><code class="xref py py-func docutils literal notranslate"><span class="pre">escape()</span></code></a>, but also prepares <em>data</em> to be used as an attribute value. The return value is a quoted version of <em>data</em> with any additional required replacements. <a class="reference internal" href="#xml.sax.saxutils.quoteattr" title="xml.sax.saxutils.quoteattr"><code class="xref py py-func docutils literal notranslate"><span class="pre">quoteattr()</span></code></a> will select a quote character based on the content of <em>data</em>, attempting to avoid encoding any quote characters in the string. If both single- and double-quote characters are already in <em>data</em>, the double-quote characters will be encoded and <em>data</em> will be wrapped in double-quotes. The resulting string can be used directly as an attribute value:</p> <div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="gp">>>> </span><span class="nb">print</span><span class="p">(</span><span class="s2">"<element attr=</span><span class="si">%s</span><span class="s2">>"</span> <span class="o">%</span> <span class="n">quoteattr</span><span class="p">(</span><span class="s2">"ab ' cd </span><span class="se">\"</span><span class="s2"> ef"</span><span class="p">))</span> <span class="go"><element attr="ab ' cd &quot; ef"></span> </pre></div> </div> <p>This function is useful when generating attribute values for HTML or any SGML using the reference concrete syntax.</p> </dd></dl> <dl class="class"> <dt id="xml.sax.saxutils.XMLGenerator"> <em class="property">class </em><code class="descclassname">xml.sax.saxutils.</code><code class="descname">XMLGenerator</code><span class="sig-paren">(</span><em>out=None</em>, <em>encoding='iso-8859-1'</em>, <em>short_empty_elements=False</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.saxutils.XMLGenerator" title="Permalink to this definition">¶</a></dt> <dd><p>This class implements the <a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.ContentHandler" title="xml.sax.handler.ContentHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">ContentHandler</span></code></a> interface by writing SAX events back into an XML document. In other words, using an <a class="reference internal" href="#xml.sax.saxutils.XMLGenerator" title="xml.sax.saxutils.XMLGenerator"><code class="xref py py-class docutils literal notranslate"><span class="pre">XMLGenerator</span></code></a> as the content handler will reproduce the original document being parsed. <em>out</em> should be a file-like object which will default to <em>sys.stdout</em>. <em>encoding</em> is the encoding of the output stream which defaults to <code class="docutils literal notranslate"><span class="pre">'iso-8859-1'</span></code>. <em>short_empty_elements</em> controls the formatting of elements that contain no content: if <code class="docutils literal notranslate"><span class="pre">False</span></code> (the default) they are emitted as a pair of start/end tags, if set to <code class="docutils literal notranslate"><span class="pre">True</span></code> they are emitted as a single self-closed tag.</p> <div class="versionadded"> <p><span class="versionmodified added">New in version 3.2: </span>The <em>short_empty_elements</em> parameter.</p> </div> </dd></dl> <dl class="class"> <dt id="xml.sax.saxutils.XMLFilterBase"> <em class="property">class </em><code class="descclassname">xml.sax.saxutils.</code><code class="descname">XMLFilterBase</code><span class="sig-paren">(</span><em>base</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.saxutils.XMLFilterBase" title="Permalink to this definition">¶</a></dt> <dd><p>This class is designed to sit between an <a class="reference internal" href="xml.sax.reader.html#xml.sax.xmlreader.XMLReader" title="xml.sax.xmlreader.XMLReader"><code class="xref py py-class docutils literal notranslate"><span class="pre">XMLReader</span></code></a> 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.</p> </dd></dl> <dl class="function"> <dt id="xml.sax.saxutils.prepare_input_source"> <code class="descclassname">xml.sax.saxutils.</code><code class="descname">prepare_input_source</code><span class="sig-paren">(</span><em>source</em>, <em>base=''</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.saxutils.prepare_input_source" title="Permalink to this definition">¶</a></dt> <dd><p>This function takes an input source and an optional base URL and returns a fully resolved <a class="reference internal" href="xml.sax.reader.html#xml.sax.xmlreader.InputSource" title="xml.sax.xmlreader.InputSource"><code class="xref py py-class docutils literal notranslate"><span class="pre">InputSource</span></code></a> object ready for reading. The input source can be given as a string, a file-like object, or an <a class="reference internal" href="xml.sax.reader.html#xml.sax.xmlreader.InputSource" title="xml.sax.xmlreader.InputSource"><code class="xref py py-class docutils literal notranslate"><span class="pre">InputSource</span></code></a> object; parsers will use this function to implement the polymorphic <em>source</em> argument to their <code class="xref py py-meth docutils literal notranslate"><span class="pre">parse()</span></code> method.</p> </dd></dl> </div> </div> </div> </div> <div class="sphinxsidebar" role="navigation" aria-label="main navigation"> <div class="sphinxsidebarwrapper"> <h4>Previous topic</h4> <p class="topless"><a href="xml.sax.handler.html" title="previous chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.handler</span></code> — Base classes for SAX handlers</a></p> <h4>Next topic</h4> <p class="topless"><a href="xml.sax.reader.html" title="next chapter"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.xmlreader</span></code> — Interface for XML parsers</a></p> <div role="note" aria-label="source link"> <h3>This Page</h3> <ul class="this-page-menu"> <li><a href="../bugs.html">Report a Bug</a></li> <li> <a href="https://github.com/python/cpython/blob/3.7/Doc/library/xml.sax.utils.rst" rel="nofollow">Show Source </a> </li> </ul> </div> </div> </div> <div class="clearer"></div> </div> <div class="related" role="navigation" aria-label="related navigation"> <h3>Navigation</h3> <ul> <li class="right" style="margin-right: 10px"> <a href="../genindex.html" title="General Index" >index</a></li> <li class="right" > <a href="../py-modindex.html" title="Python Module Index" >modules</a> |</li> <li class="right" > <a href="xml.sax.reader.html" title="xml.sax.xmlreader — Interface for XML parsers" >next</a> |</li> <li class="right" > <a href="xml.sax.handler.html" title="xml.sax.handler — Base classes for SAX handlers" >previous</a> |</li> <li><img src="../_static/py.png" alt="" style="vertical-align: middle; margin-top: -1px"/></li> <li><a href="https://www.python.org/">Python</a> »</li> <li> <span class="language_switcher_placeholder">en</span> <span class="version_switcher_placeholder">3.7.4</span> <a href="../index.html">Documentation </a> » </li> <li class="nav-item nav-item-1"><a href="index.html" >The Python Standard Library</a> »</li> <li class="nav-item nav-item-2"><a href="markup.html" >Structured Markup Processing Tools</a> »</li> <li class="right"> <div class="inline-search" style="display: none" role="search"> <form class="inline-search" action="../search.html" method="get"> <input placeholder="Quick search" type="text" name="q" /> <input type="submit" value="Go" /> <input type="hidden" name="check_keywords" value="yes" /> <input type="hidden" name="area" value="default" /> </form> </div> <script type="text/javascript">$('.inline-search').show(0);</script> | </li> </ul> </div> <div class="footer"> © <a href="../copyright.html">Copyright</a> 2001-2019, Python Software Foundation. <br /> The Python Software Foundation is a non-profit corporation. <a href="https://www.python.org/psf/donations/">Please donate.</a> <br /> Last updated on Jul 13, 2019. <a href="../bugs.html">Found a bug</a>? <br /> Created using <a href="http://sphinx.pocoo.org/">Sphinx</a> 2.0.1. </div> </body> </html>