mirror of
https://github.com/fofolee/uTools-Manuals.git
synced 2025-06-08 23:14:06 +08:00
1 line
35 KiB
HTML
1 line
35 KiB
HTML
<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接口的feed,close和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> |