uTools-Manuals/docs/python/xml.sax.reader.html
2019-04-08 23:22:26 +08:00

1 line
35 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.xmlreader"><h1><span class="yiyi-st" id="yiyi-10">20.12. <a class="reference internal" href="#module-xml.sax.xmlreader" title="xml.sax.xmlreader: Interface which SAX-compliant XML parsers must implement."><code class="xref py py-mod docutils literal"><span class="pre">xml.sax.xmlreader</span></code></a> - XML解析器的接口</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/xmlreader.py">Lib / xml / sax / xmlreader.py</a></span></p><p><span class="yiyi-st" id="yiyi-12">SAX解析器实现<a class="reference internal" href="#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-13">它们在Python模块中实现必须提供函数<code class="xref py py-func docutils literal"><span class="pre">create_parser()</span></code></span><span class="yiyi-st" id="yiyi-14">此函数由<a class="reference internal" href="xml.sax.html#xml.sax.make_parser" title="xml.sax.make_parser"><code class="xref py py-func docutils literal"><span class="pre">xml.sax.make_parser()</span></code></a>调用,不带参数以创建新的解析器对象。</span></p><dl class="class"><dt id="xml.sax.xmlreader.XMLReader"><span class="yiyi-st" id="yiyi-15"> <em class="property">class </em><code class="descclassname">xml.sax.xmlreader.</code><code class="descname">XMLReader</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-16">可以由SAX解析器继承的基类。</span></p></dd></dl><dl class="class"><dt id="xml.sax.xmlreader.IncrementalParser"><span class="yiyi-st" id="yiyi-17"> <em class="property">class </em><code class="descclassname">xml.sax.xmlreader.</code><code class="descname">IncrementalParser</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-18">在一些情况下,期望不立即解析输入源,而是在文档可用时馈送文档的块。</span><span class="yiyi-st" id="yiyi-19">注意,读取器通常不会读取整个文件,而是读取它的块;仍然<code class="xref py py-meth docutils literal"><span class="pre">parse()</span></code>将不会返回,直到整个文档被处理。</span><span class="yiyi-st" id="yiyi-20">因此,如果不希望<code class="xref py py-meth docutils literal"><span class="pre">parse()</span></code>的阻塞行为,则应使用这些接口。</span></p><p><span class="yiyi-st" id="yiyi-21">当解析器被实例化时它准备好立即开始从feed方法接受数据。</span><span class="yiyi-st" id="yiyi-22">解析完成后调用关闭reset方法必须被调用以使解析器准备接受新数据从feed或使用parse方法。</span></p><p><span class="yiyi-st" id="yiyi-23">请注意,这些方法必须在解析期间调用<em>,而不是</em>,也就是说,在解析被调用之后,在返回之前。</span></p><p><span class="yiyi-st" id="yiyi-24">默认情况下类还使用IncrementalParser接口的feedclose和reset方法实现XMLReader接口的parse方法以方便SAX 2.0驱动程序作者。</span></p></dd></dl><dl class="class"><dt id="xml.sax.xmlreader.Locator"><span class="yiyi-st" id="yiyi-25"> <em class="property">class </em><code class="descclassname">xml.sax.xmlreader.</code><code class="descname">Locator</code></span></dt><dd><p><span class="yiyi-st" id="yiyi-26">用于将SAX事件与文档位置相关联的接口。</span><span class="yiyi-st" id="yiyi-27">定位器对象只有在调用DocumentHandler方法时才会返回有效的结果在任何其他时间结果是不可预测的。</span><span class="yiyi-st" id="yiyi-28">如果信息不可用,方法可能返回<code class="docutils literal"><span class="pre">None</span></code></span></p></dd></dl><dl class="class"><dt id="xml.sax.xmlreader.InputSource"><span class="yiyi-st" id="yiyi-29"> <em class="property">class </em><code class="descclassname">xml.sax.xmlreader.</code><code class="descname">InputSource</code><span class="sig-paren">(</span><em>system_id=None</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-30">封装<a class="reference internal" href="#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></p><p><span class="yiyi-st" id="yiyi-31">该类可以包括关于公共标识符,系统标识符,字节流(可能具有字符编码信息)和/或实体的字符流的信息。</span></p><p><span class="yiyi-st" id="yiyi-32">应用程序将创建此类的对象以用于<a class="reference internal" href="#xml.sax.xmlreader.XMLReader.parse" title="xml.sax.xmlreader.XMLReader.parse"><code class="xref py py-meth docutils literal"><span class="pre">XMLReader.parse()</span></code></a>方法和从EntityResolver.resolveEntity返回。</span></p><p><span class="yiyi-st" id="yiyi-33"><a class="reference internal" href="#xml.sax.xmlreader.InputSource" title="xml.sax.xmlreader.InputSource"><code class="xref py py-class docutils literal"><span class="pre">InputSource</span></code></a>属于应用程序,<a class="reference internal" href="#xml.sax.xmlreader.XMLReader" title="xml.sax.xmlreader.XMLReader"><code class="xref py py-class docutils literal"><span class="pre">XMLReader</span></code></a>不允许修改从应用程序传递给它的<a class="reference internal" href="#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></p></dd></dl><dl class="class"><dt id="xml.sax.xmlreader.AttributesImpl"><span class="yiyi-st" id="yiyi-34"> <em class="property">class </em><code class="descclassname">xml.sax.xmlreader.</code><code class="descname">AttributesImpl</code><span class="sig-paren">(</span><em>attrs</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-35">这是<code class="xref py py-class docutils literal"><span class="pre">Attributes</span></code>接口的实现(参见<a class="reference internal" href="#attributes-objects"><span>The Attributes Interface</span></a>一节)。</span><span class="yiyi-st" id="yiyi-36">这是一个类似字典的对象,它表示<code class="xref py py-meth docutils literal"><span class="pre">startElement()</span></code>调用中的元素属性。</span><span class="yiyi-st" id="yiyi-37">除了最有用的字典操作,它支持接口所描述的许多其他方法。</span><span class="yiyi-st" id="yiyi-38">这个类的对象应该由读者实例化; <em>attrs</em>必须是包含从属性名称到属性值的映射的类字典对象。</span></p></dd></dl><dl class="class"><dt id="xml.sax.xmlreader.AttributesNSImpl"><span class="yiyi-st" id="yiyi-39"> <em class="property">class </em><code class="descclassname">xml.sax.xmlreader.</code><code class="descname">AttributesNSImpl</code><span class="sig-paren">(</span><em>attrs</em>, <em>qnames</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-40">知道<a class="reference internal" href="#xml.sax.xmlreader.AttributesImpl" title="xml.sax.xmlreader.AttributesImpl"><code class="xref py py-class docutils literal"><span class="pre">AttributesImpl</span></code></a>的命名空间变量,将传递到<code class="xref py py-meth docutils literal"><span class="pre">startElementNS()</span></code></span><span class="yiyi-st" id="yiyi-41">它源自<a class="reference internal" href="#xml.sax.xmlreader.AttributesImpl" title="xml.sax.xmlreader.AttributesImpl"><code class="xref py py-class docutils literal"><span class="pre">AttributesImpl</span></code></a>,但将属性名称理解为<em>namespaceURI</em><em>localname</em>的两元组。</span><span class="yiyi-st" id="yiyi-42">此外,它提供了一些方法,期望在原始文档中出现的限定名称。</span><span class="yiyi-st" id="yiyi-43">此类实现<code class="xref py py-class docutils literal"><span class="pre">AttributesNS</span></code>接口(参见<a class="reference internal" href="#attributes-ns-objects"><span>The AttributesNS Interface</span></a>一节)。</span></p></dd></dl><div class="section" id="xmlreader-objects"><h2><span class="yiyi-st" id="yiyi-44">20.12.1. </span><span class="yiyi-st" id="yiyi-45">XMLReader Objects</span></h2><p><span class="yiyi-st" id="yiyi-46"><a class="reference internal" href="#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></p><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.parse"><span class="yiyi-st" id="yiyi-47"> <code class="descclassname">XMLReader.</code><code class="descname">parse</code><span class="sig-paren">(</span><em>source</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-48">处理输入源生成SAX事件。</span><span class="yiyi-st" id="yiyi-49"><em></em>对象可以是系统标识符标识输入源的字符串通常是文件名或URL类似文件的对象或<a class="reference internal" href="#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-50"><a class="reference internal" href="#xml.sax.xmlreader.XMLReader.parse" title="xml.sax.xmlreader.XMLReader.parse"><code class="xref py py-meth docutils literal"><span class="pre">parse()</span></code></a>返回时,输入被完全处理,并且解析器对象可以被丢弃或重置。</span></p><div class="versionchanged"><p><span class="yiyi-st" id="yiyi-51"><span class="versionmodified">在版本3.5中更改:</span>添加了字符流的支持。</span></p></div></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.getContentHandler"><span class="yiyi-st" id="yiyi-52"> <code class="descclassname">XMLReader.</code><code class="descname">getContentHandler</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-53">返回当前<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></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.setContentHandler"><span class="yiyi-st" id="yiyi-54"> <code class="descclassname">XMLReader.</code><code class="descname">setContentHandler</code><span class="sig-paren">(</span><em>handler</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-55">设置当前<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-56">如果未设置<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></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.getDTDHandler"><span class="yiyi-st" id="yiyi-57"> <code class="descclassname">XMLReader.</code><code class="descname">getDTDHandler</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-58">返回当前<a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.DTDHandler" title="xml.sax.handler.DTDHandler"><code class="xref py py-class docutils literal"><span class="pre">DTDHandler</span></code></a></span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.setDTDHandler"><span class="yiyi-st" id="yiyi-59"> <code class="descclassname">XMLReader.</code><code class="descname">setDTDHandler</code><span class="sig-paren">(</span><em>handler</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-60">设置当前<a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.DTDHandler" title="xml.sax.handler.DTDHandler"><code class="xref py py-class docutils literal"><span class="pre">DTDHandler</span></code></a></span><span class="yiyi-st" id="yiyi-61">如果未设置<a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.DTDHandler" title="xml.sax.handler.DTDHandler"><code class="xref py py-class docutils literal"><span class="pre">DTDHandler</span></code></a>则DTD事件将被丢弃。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.getEntityResolver"><span class="yiyi-st" id="yiyi-62"> <code class="descclassname">XMLReader.</code><code class="descname">getEntityResolver</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-63">返回当前<a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.EntityResolver" title="xml.sax.handler.EntityResolver"><code class="xref py py-class docutils literal"><span class="pre">EntityResolver</span></code></a></span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.setEntityResolver"><span class="yiyi-st" id="yiyi-64"> <code class="descclassname">XMLReader.</code><code class="descname">setEntityResolver</code><span class="sig-paren">(</span><em>handler</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-65">设置当前<a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.EntityResolver" title="xml.sax.handler.EntityResolver"><code class="xref py py-class docutils literal"><span class="pre">EntityResolver</span></code></a></span><span class="yiyi-st" id="yiyi-66">如果未设置<a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.EntityResolver" title="xml.sax.handler.EntityResolver"><code class="xref py py-class docutils literal"><span class="pre">EntityResolver</span></code></a>,则尝试解析外部实体将导致打开实体的系统标识符,如果不可用,则会失败。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.getErrorHandler"><span class="yiyi-st" id="yiyi-67"> <code class="descclassname">XMLReader.</code><code class="descname">getErrorHandler</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-68">返回当前的<a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.ErrorHandler" title="xml.sax.handler.ErrorHandler"><code class="xref py py-class docutils literal"><span class="pre">ErrorHandler</span></code></a></span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.setErrorHandler"><span class="yiyi-st" id="yiyi-69"> <code class="descclassname">XMLReader.</code><code class="descname">setErrorHandler</code><span class="sig-paren">(</span><em>handler</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-70">设置当前错误处理程序。</span><span class="yiyi-st" id="yiyi-71">如果未设置<a class="reference internal" href="xml.sax.handler.html#xml.sax.handler.ErrorHandler" title="xml.sax.handler.ErrorHandler"><code class="xref py py-class docutils literal"><span class="pre">ErrorHandler</span></code></a>,则错误将作为异常引发,并将打印警告。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.setLocale"><span class="yiyi-st" id="yiyi-72"> <code class="descclassname">XMLReader.</code><code class="descname">setLocale</code><span class="sig-paren">(</span><em>locale</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-73">允许应用程序设置错误和警告的区域设置。</span></p><p><span class="yiyi-st" id="yiyi-74">SAX解析器不需要提供错误和警告的本地化如果它们不能支持请求的语言环境则它们必须引发SAX异常。</span><span class="yiyi-st" id="yiyi-75">应用程序可以在解析的中间请求区域设置更改。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.getFeature"><span class="yiyi-st" id="yiyi-76"> <code class="descclassname">XMLReader.</code><code class="descname">getFeature</code><span class="sig-paren">(</span><em>featurename</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-77">返回<em>featurename</em>的当前设置。</span><span class="yiyi-st" id="yiyi-78">如果该功能未被识别,则会引发<code class="xref py py-exc docutils literal"><span class="pre">SAXNotRecognizedException</span></code></span><span class="yiyi-st" id="yiyi-79">众所周知的特征名称在模块<a class="reference internal" href="xml.sax.handler.html#module-xml.sax.handler" title="xml.sax.handler: Base classes for SAX event handlers."><code class="xref py py-mod docutils literal"><span class="pre">xml.sax.handler</span></code></a>中列出。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.setFeature"><span class="yiyi-st" id="yiyi-80"> <code class="descclassname">XMLReader.</code><code class="descname">setFeature</code><span class="sig-paren">(</span><em>featurename</em>, <em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-81"><em>featurename</em>设置为<em></em></span><span class="yiyi-st" id="yiyi-82">如果该功能未被识别,则会引发<code class="xref py py-exc docutils literal"><span class="pre">SAXNotRecognizedException</span></code></span><span class="yiyi-st" id="yiyi-83">如果解析器不支持该功能或其设置,则会引发<em>SAXNotSupportedException</em></span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.getProperty"><span class="yiyi-st" id="yiyi-84"> <code class="descclassname">XMLReader.</code><code class="descname">getProperty</code><span class="sig-paren">(</span><em>propertyname</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-85">返回属性<em>属性名</em>的当前设置。</span><span class="yiyi-st" id="yiyi-86">如果该属性未被识别,则会引发<code class="xref py py-exc docutils literal"><span class="pre">SAXNotRecognizedException</span></code></span><span class="yiyi-st" id="yiyi-87">众所周知的属性名称在模块<a class="reference internal" href="xml.sax.handler.html#module-xml.sax.handler" title="xml.sax.handler: Base classes for SAX event handlers."><code class="xref py py-mod docutils literal"><span class="pre">xml.sax.handler</span></code></a>中列出。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.XMLReader.setProperty"><span class="yiyi-st" id="yiyi-88"> <code class="descclassname">XMLReader.</code><code class="descname">setProperty</code><span class="sig-paren">(</span><em>propertyname</em>, <em>value</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-89"><em>属性名</em>设置为<em></em></span><span class="yiyi-st" id="yiyi-90">如果该属性未被识别,则会引发<code class="xref py py-exc docutils literal"><span class="pre">SAXNotRecognizedException</span></code></span><span class="yiyi-st" id="yiyi-91">如果解析器不支持属性或其设置,则会引发<em>SAXNotSupportedException</em></span></p></dd></dl></div><div class="section" id="incrementalparser-objects"><h2><span class="yiyi-st" id="yiyi-92">20.12.2. </span><span class="yiyi-st" id="yiyi-93">IncrementalParser Objects</span></h2><p><span class="yiyi-st" id="yiyi-94"><a class="reference internal" href="#xml.sax.xmlreader.IncrementalParser" title="xml.sax.xmlreader.IncrementalParser"><code class="xref py py-class docutils literal"><span class="pre">IncrementalParser</span></code></a>的实例提供以下附加方法:</span></p><dl class="method"><dt id="xml.sax.xmlreader.IncrementalParser.feed"><span class="yiyi-st" id="yiyi-95"> <code class="descclassname">IncrementalParser.</code><code class="descname">feed</code><span class="sig-paren">(</span><em>data</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-96">处理一小块<em>数据</em></span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.IncrementalParser.close"><span class="yiyi-st" id="yiyi-97"> <code class="descclassname">IncrementalParser.</code><code class="descname">close</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-98">假设文档结束。</span><span class="yiyi-st" id="yiyi-99">这将检查只能在结束时检查的良好形成条件,调用处理程序,并可以清理在解析期间分配的资源。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.IncrementalParser.reset"><span class="yiyi-st" id="yiyi-100"> <code class="descclassname">IncrementalParser.</code><code class="descname">reset</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-101">此方法在调用close之后调用以重置解析器以便它可以解析新文档。</span><span class="yiyi-st" id="yiyi-102">关闭后调用解析或feed的结果未调用reset将被定义。</span></p></dd></dl></div><div class="section" id="locator-objects"><h2><span class="yiyi-st" id="yiyi-103">20.12.3. </span><span class="yiyi-st" id="yiyi-104">Locator Objects</span></h2><p><span class="yiyi-st" id="yiyi-105"><a class="reference internal" href="#xml.sax.xmlreader.Locator" title="xml.sax.xmlreader.Locator"><code class="xref py py-class docutils literal"><span class="pre">Locator</span></code></a>的实例提供以下方法:</span></p><dl class="method"><dt id="xml.sax.xmlreader.Locator.getColumnNumber"><span class="yiyi-st" id="yiyi-106"> <code class="descclassname">Locator.</code><code class="descname">getColumnNumber</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-107">返回当前事件开始的列号。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.Locator.getLineNumber"><span class="yiyi-st" id="yiyi-108"> <code class="descclassname">Locator.</code><code class="descname">getLineNumber</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-109">返回当前事件开始的行号。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.Locator.getPublicId"><span class="yiyi-st" id="yiyi-110"> <code class="descclassname">Locator.</code><code class="descname">getPublicId</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-111">返回当前事件的公共标识符。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.Locator.getSystemId"><span class="yiyi-st" id="yiyi-112"> <code class="descclassname">Locator.</code><code class="descname">getSystemId</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-113">返回当前事件的系统标识符。</span></p></dd></dl></div><div class="section" id="inputsource-objects"><h2><span class="yiyi-st" id="yiyi-114">20.12.4. </span><span class="yiyi-st" id="yiyi-115">InputSource Objects</span></h2><dl class="method"><dt id="xml.sax.xmlreader.InputSource.setPublicId"><span class="yiyi-st" id="yiyi-116"> <code class="descclassname">InputSource.</code><code class="descname">setPublicId</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-117">设置此<a class="reference internal" href="#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></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.InputSource.getPublicId"><span class="yiyi-st" id="yiyi-118"> <code class="descclassname">InputSource.</code><code class="descname">getPublicId</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-119">返回此<a class="reference internal" href="#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></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.InputSource.setSystemId"><span class="yiyi-st" id="yiyi-120"> <code class="descclassname">InputSource.</code><code class="descname">setSystemId</code><span class="sig-paren">(</span><em>id</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-121">设置此<a class="reference internal" href="#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></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.InputSource.getSystemId"><span class="yiyi-st" id="yiyi-122"> <code class="descclassname">InputSource.</code><code class="descname">getSystemId</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-123">返回此<a class="reference internal" href="#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></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.InputSource.setEncoding"><span class="yiyi-st" id="yiyi-124"> <code class="descclassname">InputSource.</code><code class="descname">setEncoding</code><span class="sig-paren">(</span><em>encoding</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-125">设置此<a class="reference internal" href="#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></p><p><span class="yiyi-st" id="yiyi-126">编码必须是XML编码声明可接受的字符串请参阅XML建议的第4.3.3节)。</span></p><p><span class="yiyi-st" id="yiyi-127">如果<a class="reference internal" href="#xml.sax.xmlreader.InputSource" title="xml.sax.xmlreader.InputSource"><code class="xref py py-class docutils literal"><span class="pre">InputSource</span></code></a>还包含字符流,则会忽略<a class="reference internal" href="#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></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.InputSource.getEncoding"><span class="yiyi-st" id="yiyi-128"> <code class="descclassname">InputSource.</code><code class="descname">getEncoding</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-129">获取此InputSource的字符编码。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.InputSource.setByteStream"><span class="yiyi-st" id="yiyi-130"> <code class="descclassname">InputSource.</code><code class="descname">setByteStream</code><span class="sig-paren">(</span><em>bytefile</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-131">为此输入源设置字节流(<a class="reference internal" href="../glossary.html#term-binary-file"><span class="xref std std-term">binary file</span></a>)。</span></p><p><span class="yiyi-st" id="yiyi-132">如果还有一个字符流被指定SAX解析器将忽略它但它将使用一个字节流优先于打开一个URI连接本身。</span></p><p><span class="yiyi-st" id="yiyi-133">如果应用程序知道字节流的字符编码则应使用setEncoding方法设置它。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.InputSource.getByteStream"><span class="yiyi-st" id="yiyi-134"> <code class="descclassname">InputSource.</code><code class="descname">getByteStream</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-135">获取此输入源的字节流。</span></p><p><span class="yiyi-st" id="yiyi-136">getEncoding方法将返回此字节流的字符编码如果未知则返回None。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.InputSource.setCharacterStream"><span class="yiyi-st" id="yiyi-137"> <code class="descclassname">InputSource.</code><code class="descname">setCharacterStream</code><span class="sig-paren">(</span><em>charfile</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-138">设置此输入源的字符流(<a class="reference internal" href="../glossary.html#term-text-file"><span class="xref std std-term">text file</span></a>)。</span></p><p><span class="yiyi-st" id="yiyi-139">如果指定了字符流则SAX解析器将忽略任何字节流并且不会尝试打开与系统标识符的URI连接。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.InputSource.getCharacterStream"><span class="yiyi-st" id="yiyi-140"> <code class="descclassname">InputSource.</code><code class="descname">getCharacterStream</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-141">获取此输入源的字符流。</span></p></dd></dl></div><div class="section" id="the-attributes-interface"><h2><span class="yiyi-st" id="yiyi-142">20.12.5. </span><span class="yiyi-st" id="yiyi-143">The <code class="xref py py-class docutils literal"><span class="pre">Attributes</span></code> Interface</span></h2><p><span class="yiyi-st" id="yiyi-144"><code class="xref py py-class docutils literal"><span class="pre">Attributes</span></code> objects implement a portion of the <a class="reference internal" href="../glossary.html#term-mapping"><span class="xref std std-term">mapping protocol</span></a>, including the methods <code class="xref py py-meth docutils literal"><span class="pre">copy()</span></code>, <code class="xref py py-meth docutils literal"><span class="pre">get()</span></code>, <a class="reference internal" href="../reference/datamodel.html#object.__contains__" title="object.__contains__"><code class="xref py py-meth docutils literal"><span class="pre">__contains__()</span></code></a>, <code class="xref py py-meth docutils literal"><span class="pre">items()</span></code>, <code class="xref py py-meth docutils literal"><span class="pre">keys()</span></code>, and <code class="xref py py-meth docutils literal"><span class="pre">values()</span></code>. </span><span class="yiyi-st" id="yiyi-145">还提供以下方法:</span></p><dl class="method"><dt id="xml.sax.xmlreader.Attributes.getLength"><span class="yiyi-st" id="yiyi-146"> <code class="descclassname">Attributes.</code><code class="descname">getLength</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-147">返回属性的数量。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.Attributes.getNames"><span class="yiyi-st" id="yiyi-148"> <code class="descclassname">Attributes.</code><code class="descname">getNames</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-149">返回属性的名称。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.Attributes.getType"><span class="yiyi-st" id="yiyi-150"> <code class="descclassname">Attributes.</code><code class="descname">getType</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-151">返回属性<em>name</em>的类型,通常为<code class="docutils literal"><span class="pre">'CDATA'</span></code></span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.Attributes.getValue"><span class="yiyi-st" id="yiyi-152"> <code class="descclassname">Attributes.</code><code class="descname">getValue</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-153">返回属性<em>name</em>的值。</span></p></dd></dl></div><div class="section" id="the-attributesns-interface"><h2><span class="yiyi-st" id="yiyi-154">20.12.6. </span><span class="yiyi-st" id="yiyi-155">The <code class="xref py py-class docutils literal"><span class="pre">AttributesNS</span></code> Interface</span></h2><p><span class="yiyi-st" id="yiyi-156">此接口是<code class="xref py py-class docutils literal"><span class="pre">Attributes</span></code>接口的子类型(请参见<a class="reference internal" href="#attributes-objects"><span>The Attributes Interface</span></a>一节)。</span><span class="yiyi-st" id="yiyi-157">该接口支持的所有方法也可在<code class="xref py py-class docutils literal"><span class="pre">AttributesNS</span></code>对象上使用。</span></p><p><span class="yiyi-st" id="yiyi-158">还有以下方法:</span></p><dl class="method"><dt id="xml.sax.xmlreader.AttributesNS.getValueByQName"><span class="yiyi-st" id="yiyi-159"> <code class="descclassname">AttributesNS.</code><code class="descname">getValueByQName</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-160">返回限定名称的值。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.AttributesNS.getNameByQName"><span class="yiyi-st" id="yiyi-161"> <code class="descclassname">AttributesNS.</code><code class="descname">getNameByQName</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-162">返回符合条件的<em>名称</em><code class="docutils literal"><span class="pre">(命名空间,</span> <span class="pre">本地名称)</span> </code></span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.AttributesNS.getQNameByName"><span class="yiyi-st" id="yiyi-163"> <code class="descclassname">AttributesNS.</code><code class="descname">getQNameByName</code><span class="sig-paren">(</span><em>name</em><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-164">返回<code class="docutils literal"><span class="pre">(命名空间,</span> <span class="pre">本地名称)</span></code>对的限定名称。</span></p></dd></dl><dl class="method"><dt id="xml.sax.xmlreader.AttributesNS.getQNames"><span class="yiyi-st" id="yiyi-165"> <code class="descclassname">AttributesNS.</code><code class="descname">getQNames</code><span class="sig-paren">(</span><span class="sig-paren">)</span></span></dt><dd><p><span class="yiyi-st" id="yiyi-166">返回所有属性的限定名称。</span></p></dd></dl></div></div></div>