mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 23:14:06 +08:00
3 lines
9.1 KiB
HTML
3 lines
9.1 KiB
HTML
<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">'&'</span></code>, <code class="docutils literal"><span class="pre">'<'</span></code>, and <code class="docutils literal"><span class="pre">'>'</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">'&'</span></code>, <code class="docutils literal"><span class="pre">'<'</span></code> and <code class="docutils literal"><span class="pre">'>'</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;'</span></code>,<code class="docutils literal"><span class="pre">'&lt;'</span></code>和<code class="docutils literal"><span class="pre">'&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'</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 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">>>> </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>
|
||
</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> |