uTools-Manuals/docs/python/xml.sax.utils.html
2019-04-21 11:50:48 +08:00

3 lines
9.1 KiB
HTML
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<div class="body" role="main"><div class="section" id="module-xml.sax.saxutils"><h1><span class="yiyi-st" id="yiyi-10">20.11. <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"><span class="pre">xml.sax.saxutils</span></code></a> - SAX工具</span></h1><p><span class="yiyi-st" id="yiyi-11"><strong>源代码:</strong> <a class="reference external" href="https://hg.python.org/cpython/file/3.5/Lib/xml/sax/saxutils.py">Lib / xml / sax / saxutils.py</a></span></p><p><span class="yiyi-st" id="yiyi-12">模块<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"><span class="pre">xml.sax.saxutils</span></code></a>包含许多类和函数这些类和函数在创建直接使用或作为基类的SAX应用程序时通常很有用。</span></p><dl class="function"><dt id="xml.sax.saxutils.escape"><span class="yiyi-st" id="yiyi-13"> <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></span></dt><dd><p><span class="yiyi-st" id="yiyi-14">Escape <code class="docutils literal"><span class="pre">'&amp;'</span></code>, <code class="docutils literal"><span class="pre">'&lt;'</span></code>, and <code class="docutils literal"><span class="pre">'&gt;'</span></code> in a string of data.</span></p><p><span class="yiyi-st" id="yiyi-15">您可以通过将字典作为可选的<em>实体</em>参数转义其他字符串数据。</span><span class="yiyi-st" id="yiyi-16">键和值都必须是字符串;每个键将被其相应的值替换。</span><span class="yiyi-st" id="yiyi-17">The characters <code class="docutils literal"><span class="pre">'&amp;'</span></code>, <code class="docutils literal"><span class="pre">'&lt;'</span></code> and <code class="docutils literal"><span class="pre">'&gt;'</span></code> are always escaped, even if <em>entities</em> is provided.</span></p></dd></dl><dl class="function"><dt id="xml.sax.saxutils.unescape"><span class="yiyi-st" id="yiyi-18"> <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></span></dt><dd><p><span class="yiyi-st" id="yiyi-19">在数据字符串中取消转义<code class="docutils literal"><span class="pre">'&amp;amp;'</span></code><code class="docutils literal"><span class="pre">'&amp;lt;'</span></code><code class="docutils literal"><span class="pre">'&amp;gt;'</span></code></span></p><p><span class="yiyi-st" id="yiyi-20">您可以通过传递字典作为可选的<em>实体</em>参数来取消转义其他数据字符串。</span><span class="yiyi-st" id="yiyi-21">键和值都必须是字符串;每个键将被其相应的值替换。</span><span class="yiyi-st" id="yiyi-22"><code class="docutils literal"><span class="pre">'&amp;amp'</span></code>, <code class="docutils literal"><span class="pre">'&amp;lt;'</span></code>, and <code class="docutils literal"><span class="pre">'&amp;gt;'</span></code> are always unescaped, even if <em>entities</em> is provided.</span></p></dd></dl><dl class="function"><dt id="xml.sax.saxutils.quoteattr"><span class="yiyi-st" id="yiyi-23"> <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></span></dt><dd><p><span class="yiyi-st" id="yiyi-24">类似于<a class="reference internal" href="#xml.sax.saxutils.escape" title="xml.sax.saxutils.escape"><code class="xref py py-func docutils literal"><span class="pre">escape()</span></code></a>,但也准备<em>数据</em>以用作属性值。</span><span class="yiyi-st" id="yiyi-25">返回值是带有任何其他所需替换的<em>数据</em>的引用版本。</span><span class="yiyi-st" id="yiyi-26"><a class="reference internal" href="#xml.sax.saxutils.quoteattr" title="xml.sax.saxutils.quoteattr"><code class="xref py py-func docutils literal"><span class="pre">quoteattr()</span></code></a>将根据<em>数据</em>的内容选择引用字符,尝试避免对字符串中的任何引号字符进行编码。</span><span class="yiyi-st" id="yiyi-27">如果单引号和双引号字符都已在<em>数据</em>中,则双引号字符将被编码,并且<em>数据</em>将包含在双引号中。</span><span class="yiyi-st" id="yiyi-28">结果字符串可以直接用作属性值:</span></p><pre><code class="language-python"><span></span><span class="gp">&gt;&gt;&gt; </span><span class="nb">print</span><span class="p">(</span><span class="s2">"&lt;element attr=</span><span class="si">%s</span><span class="s2">&gt;"</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">&lt;element attr="ab ' cd &amp;quot; ef"&gt;</span>
</code></pre><p><span class="yiyi-st" id="yiyi-29">当使用引用具体语法为HTML或任何SGML生成属性值时此函数很有用。</span></p></dd></dl><dl class="class"><dt id="xml.sax.saxutils.XMLGenerator"><span class="yiyi-st" id="yiyi-30"> <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></span></dt><dd><p><span class="yiyi-st" id="yiyi-31">此类通过将SAX事件写回XML文档来实现<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"><span class="pre">ContentHandler</span></code></a>接口。</span><span class="yiyi-st" id="yiyi-32">换句话说,使用<a class="reference internal" href="#xml.sax.saxutils.XMLGenerator" title="xml.sax.saxutils.XMLGenerator"><code class="xref py py-class docutils literal"><span class="pre">XMLGenerator</span></code></a>作为内容处理程序将再现正在解析的原始文档。</span><span class="yiyi-st" id="yiyi-33"><em>out</em>应该是一个类似文件的对象,默认为<em>sys.stdout</em></span><span class="yiyi-st" id="yiyi-34"><em>encoding</em>是输出流的编码,默认为<code class="docutils literal"><span class="pre">'iso-8859-1'</span></code></span><span class="yiyi-st" id="yiyi-35"><em>short_empty_elements</em>控制不包含内容的元素的格式:如果<em>False</em>(默认值),则它们作为一对开始/结束标记发出,如果设置为<em>True </em>它们作为单个自封闭标签发出。</span></p><div class="versionadded"><p><span class="yiyi-st" id="yiyi-36"><span class="versionmodified">版本3.2中的新功能:</span> <em>short_empty_elements</em>参数。</span></p></div></dd></dl><dl class="class"><dt id="xml.sax.saxutils.XMLFilterBase"><span class="yiyi-st" id="yiyi-37"> <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></span></dt><dd><p><span class="yiyi-st" id="yiyi-38">此类设计为位于<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"><span class="pre">XMLReader</span></code></a>和客户端应用程序的事件处理程序之间。</span><span class="yiyi-st" id="yiyi-39">默认情况下,它不做任何事情,只是将读取器和事件传递到处理程序,但是子类可以重写特定的方法来修改事件流或配置请求。</span></p></dd></dl><dl class="function"><dt id="xml.sax.saxutils.prepare_input_source"><span class="yiyi-st" id="yiyi-40"> <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></span></dt><dd><p><span class="yiyi-st" id="yiyi-41">此函数接受一个输入源和一个可选的基址URL并返回一个完全解析的<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"><span class="pre">InputSource</span></code></a>对象,可以读取。</span><span class="yiyi-st" id="yiyi-42">输入源可以作为字符串,类文件对象或<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"><span class="pre">InputSource</span></code></a>对象提供;解析器将使用此函数为其<code class="xref py py-meth docutils literal"><span class="pre">parse()</span></code>方法实现多态<em></em>参数。</span></p></dd></dl></div></div>