Files
hustoj/web/python-docs/library/pyexpat.html
2025-03-09 17:10:56 +08:00

1003 lines
94 KiB
HTML
Raw Permalink 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.
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml" lang="zh_CN">
<head>
<meta charset="utf-8" /><meta name="generator" content="Docutils 0.17.1: http://docutils.sourceforge.net/" />
<title>xml.parsers.expat --- 使用 Expat 的快速 XML 解析 &#8212; Python 3.8.20 文档</title><meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="stylesheet" href="../_static/pydoctheme.css" type="text/css" />
<link rel="stylesheet" href="../_static/pygments.css" type="text/css" />
<script id="documentation_options" data-url_root="../" src="../_static/documentation_options.js"></script>
<script src="../_static/jquery.js"></script>
<script src="../_static/underscore.js"></script>
<script src="../_static/doctools.js"></script>
<script src="../_static/language_data.js"></script>
<script src="../_static/translations.js"></script>
<script src="../_static/sidebar.js"></script>
<link rel="search" type="application/opensearchdescription+xml"
title="在 Python 3.8.20 文档 中搜索"
href="../_static/opensearch.xml"/>
<link rel="author" title="关于这些文档" href="../about.html" />
<link rel="index" title="索引" href="../genindex.html" />
<link rel="search" title="搜索" href="../search.html" />
<link rel="copyright" title="版权所有" href="../copyright.html" />
<link rel="next" title="互联网协议和支持" href="internet.html" />
<link rel="prev" title="xml.sax.xmlreader --- 用于 XML 解析器的接口" href="xml.sax.reader.html" />
<link rel="canonical" href="https://docs.python.org/3/library/pyexpat.html" />
<style>
@media only screen {
table.full-width-table {
width: 100%;
}
}
</style>
<link rel="shortcut icon" type="image/png" href="../_static/py.svg" />
<script type="text/javascript" src="../_static/copybutton.js"></script>
<script type="text/javascript" src="../_static/menu.js"></script>
</head>
<body>
<div class="mobile-nav">
<input type="checkbox" id="menuToggler" class="toggler__input" aria-controls="navigation"
aria-pressed="false" aria-expanded="false" role="button" aria-label="Menu" />
<label for="menuToggler" class="toggler__label">
<span></span>
</label>
<nav class="nav-content" role="navigation">
<a href="https://www.python.org/" class="nav-logo">
<img src="../_static/py.svg" alt="Logo"/>
</a>
<div class="version_switcher_placeholder"></div>
<form role="search" class="search" action="../search.html" method="get">
<svg xmlns="http://www.w3.org/2000/svg" width="20" height="20" viewBox="0 0 24 24" class="search-icon">
<path fill-rule="nonzero"
d="M15.5 14h-.79l-.28-.27a6.5 6.5 0 001.48-5.34c-.47-2.78-2.79-5-5.59-5.34a6.505 6.505 0 00-7.27 7.27c.34 2.8 2.56 5.12 5.34 5.59a6.5 6.5 0 005.34-1.48l.27.28v.79l4.25 4.25c.41.41 1.08.41 1.49 0 .41-.41.41-1.08 0-1.49L15.5 14zm-6 0C7.01 14 5 11.99 5 9.5S7.01 5 9.5 5 14 7.01 14 9.5 11.99 14 9.5 14z" fill="#444"></path>
</svg>
<input type="text" name="q" aria-label="快速搜索"/>
<input type="submit" value="转向"/>
</form>
</nav>
<div class="menu-wrapper">
<nav class="menu" role="navigation" aria-label="main navigation">
<div class="language_switcher_placeholder"></div>
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.parsers.expat</span></code> --- 使用 Expat 的快速 XML 解析</a><ul>
<li><a class="reference internal" href="#xmlparser-objects">XMLParser对象</a></li>
<li><a class="reference internal" href="#expaterror-exceptions">ExpatError 异常</a></li>
<li><a class="reference internal" href="#example">示例</a></li>
<li><a class="reference internal" href="#module-xml.parsers.expat.model">内容模型描述</a></li>
<li><a class="reference internal" href="#module-xml.parsers.expat.errors">Expat 错误常量</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="xml.sax.reader.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.xmlreader</span></code> --- 用于 XML 解析器的接口</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="internet.html"
title="下一章">互联网协议和支持</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/pyexpat.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</nav>
</div>
</div>
<div id="outdated-warning" style="padding: .5em; text-align: center; background-color: #FFBABA; color: #6A0E0E;">
这个文档所针对的是一个已不再受支持的 Python 旧版本。
你应当升级版本,并阅读
<a href="/3/library/pyexpat.html"> Python 当前稳定版本的文档</a>.
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
accesskey="I">索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="internet.html" title="互联网协议和支持"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="xml.sax.reader.html" title="xml.sax.xmlreader --- 用于 XML 解析器的接口"
accesskey="P">上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="markup.html" accesskey="U">结构化标记处理工具</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="document">
<div class="documentwrapper">
<div class="bodywrapper">
<div class="body" role="main">
<section id="module-xml.parsers.expat">
<span id="xml-parsers-expat-fast-xml-parsing-using-expat"></span><h1><a class="reference internal" href="#module-xml.parsers.expat" title="xml.parsers.expat: An interface to the Expat non-validating XML parser."><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.parsers.expat</span></code></a> --- 使用 Expat 的快速 XML 解析<a class="headerlink" href="#module-xml.parsers.expat" title="永久链接至标题"></a></h1>
<hr class="docutils" />
<div class="admonition warning">
<p class="admonition-title">警告</p>
<p><code class="xref py py-mod docutils literal notranslate"><span class="pre">pyexpat</span></code> 模块对于恶意构建的数据是不安全的。 如果你需要解析不受信任或未经身份验证的数据,请参阅 <a class="reference internal" href="xml.html#xml-vulnerabilities"><span class="std std-ref">XML 漏洞</span></a></p>
</div>
<p id="index-0"><a class="reference internal" href="#module-xml.parsers.expat" title="xml.parsers.expat: An interface to the Expat non-validating XML parser."><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.parsers.expat</span></code></a> 模块是针对 Expat 非验证 XML 解析器的 Python 接口。 此模块提供了一个扩展类型 <code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code>,它代表一个 XML 解析器的当前状态。 在创建一个 <code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code> 对象之后,该对象的各个属性可被设置为相应的处理器函数。 随后当将一个 XML 文档送入解析器时,就会为该 XML 文档中的字符数据和标记调用处理器函数。</p>
<p id="index-1">此模块使用 <code class="xref py py-mod docutils literal notranslate"><span class="pre">pyexpat</span></code> 模块来提供对 Expat 解析器的访问。 直接使用 <code class="xref py py-mod docutils literal notranslate"><span class="pre">pyexpat</span></code> 模块的方式已被弃用。</p>
<p>此模块提供了一个异常和一个类型对象:</p>
<dl class="exception">
<dt id="xml.parsers.expat.ExpatError">
<em class="property">exception </em><code class="sig-prename descclassname">xml.parsers.expat.</code><code class="sig-name descname">ExpatError</code><a class="headerlink" href="#xml.parsers.expat.ExpatError" title="永久链接至目标"></a></dt>
<dd><p>此异常会在 Expat 报错时被引发。 请参阅 <a class="reference internal" href="#expaterror-objects"><span class="std std-ref">ExpatError 异常</span></a> 一节了解有关解读 Expat 错误的更多信息。</p>
</dd></dl>
<dl class="exception">
<dt id="xml.parsers.expat.error">
<em class="property">exception </em><code class="sig-prename descclassname">xml.parsers.expat.</code><code class="sig-name descname">error</code><a class="headerlink" href="#xml.parsers.expat.error" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="#xml.parsers.expat.ExpatError" title="xml.parsers.expat.ExpatError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ExpatError</span></code></a> 的别名。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.XMLParserType">
<code class="sig-prename descclassname">xml.parsers.expat.</code><code class="sig-name descname">XMLParserType</code><a class="headerlink" href="#xml.parsers.expat.XMLParserType" title="永久链接至目标"></a></dt>
<dd><p>来自 <a class="reference internal" href="#xml.parsers.expat.ParserCreate" title="xml.parsers.expat.ParserCreate"><code class="xref py py-func docutils literal notranslate"><span class="pre">ParserCreate()</span></code></a> 函数的返回值的类型。</p>
</dd></dl>
<p><a class="reference internal" href="#module-xml.parsers.expat" title="xml.parsers.expat: An interface to the Expat non-validating XML parser."><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.parsers.expat</span></code></a> 模块包含两个函数:</p>
<dl class="function">
<dt id="xml.parsers.expat.ErrorString">
<code class="sig-prename descclassname">xml.parsers.expat.</code><code class="sig-name descname">ErrorString</code><span class="sig-paren">(</span><em class="sig-param">errno</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.ErrorString" title="永久链接至目标"></a></dt>
<dd><p>返回给定错误号 <em>errno</em> 的解释性字符串。</p>
</dd></dl>
<dl class="function">
<dt id="xml.parsers.expat.ParserCreate">
<code class="sig-prename descclassname">xml.parsers.expat.</code><code class="sig-name descname">ParserCreate</code><span class="sig-paren">(</span><em class="sig-param">encoding=None</em>, <em class="sig-param">namespace_separator=None</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.ParserCreate" title="永久链接至目标"></a></dt>
<dd><p>创建并返回一个新的 <code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code> 对象。 如果指定了 <em>encoding</em>,它必须为指定 XML 数据所使用的编码格式名称的字符串。 Expat 支持的编码格式没有 Python 那样多,而且它的编码格式库也不能被扩展;它支持 UTF-8, UTF-16, ISO-8859-1 (Latin1) 和 ASCII。 如果给出了 <em>encoding</em> <a class="footnote-reference brackets" href="#id3" id="id1">1</a> 则它将覆盖隐式或显式指定的文档编码格式。</p>
<p>可以选择让 Expat 为你做 XML 命名空间处理,这是通过提供 <em>namespace_separator</em> 值来启用的。 该值必须是一个单字符的字符串;如果字符串的长度不合法则将引发 <a class="reference internal" href="exceptions.html#ValueError" title="ValueError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ValueError</span></code></a> (<code class="docutils literal notranslate"><span class="pre">None</span></code> 被视为等同于省略)。 当命名空间处理被启用时,属于特定命名空间的元素类型名称和属性名称将被展开。 传递给The element name passed to the 元素处理器 <code class="xref py py-attr docutils literal notranslate"><span class="pre">StartElementHandler</span></code><code class="xref py py-attr docutils literal notranslate"><span class="pre">EndElementHandler</span></code> 的元素名称将为命名空间 URI命名空间分隔符和名称的本地部分的拼接。 如果命名空间分隔符是一个零字节 (<code class="docutils literal notranslate"><span class="pre">chr(0)</span></code>) 则命名空间 URI 和本地部分将被直接拼接而不带任何分隔符。</p>
<p>举例来说,如果 <em>namespace_separator</em> 被设为空格符 (<code class="docutils literal notranslate"><span class="pre">'</span> <span class="pre">'</span></code>) 并对以下文档进行解析:</p>
<div class="highlight-xml notranslate"><div class="highlight"><pre><span></span><span class="cp">&lt;?xml version=&quot;1.0&quot;?&gt;</span>
<span class="nt">&lt;root</span><span class="w"> </span><span class="na">xmlns =</span><span class="w"> </span><span class="s">&quot;http://default-namespace.org/&quot;</span>
<span class="w"> </span><span class="na">xmlns:py =</span><span class="w"> </span><span class="s">&quot;http://www.python.org/ns/&quot;</span><span class="nt">&gt;</span>
<span class="w"> </span><span class="nt">&lt;py:elem1</span><span class="w"> </span><span class="nt">/&gt;</span>
<span class="w"> </span><span class="nt">&lt;elem2</span><span class="w"> </span><span class="na">xmlns=</span><span class="s">&quot;&quot;</span><span class="w"> </span><span class="nt">/&gt;</span>
<span class="nt">&lt;/root&gt;</span>
</pre></div>
</div>
<p><code class="xref py py-attr docutils literal notranslate"><span class="pre">StartElementHandler</span></code> 将为每个元素获取以下字符串:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">default</span><span class="o">-</span><span class="n">namespace</span><span class="o">.</span><span class="n">org</span><span class="o">/</span> <span class="n">root</span>
<span class="n">http</span><span class="p">:</span><span class="o">//</span><span class="n">www</span><span class="o">.</span><span class="n">python</span><span class="o">.</span><span class="n">org</span><span class="o">/</span><span class="n">ns</span><span class="o">/</span> <span class="n">elem1</span>
<span class="n">elem2</span>
</pre></div>
</div>
<p>由于 <code class="xref py py-mod docutils literal notranslate"><span class="pre">pyexpat</span></code> 所使用的 <code class="docutils literal notranslate"><span class="pre">Expat</span></code> 库的限制,被返回的 <code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code> 实例只能被用来解析单个 XML 文档。 请为每个文档调用 <code class="docutils literal notranslate"><span class="pre">ParserCreate</span></code> 来提供单独的解析器实例。</p>
</dd></dl>
<div class="admonition seealso">
<p class="admonition-title">参见</p>
<dl class="simple">
<dt><a class="reference external" href="http://www.libexpat.org/">The Expat XML Parser</a></dt><dd><p>Expat 项目的主页。</p>
</dd>
</dl>
</div>
<section id="xmlparser-objects">
<span id="id2"></span><h2>XMLParser对象<a class="headerlink" href="#xmlparser-objects" title="永久链接至标题"></a></h2>
<p><code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code> 对象具有以下方法:</p>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.Parse">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">Parse</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="optional">[</span>, <em class="sig-param">isfinal</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.Parse" title="永久链接至目标"></a></dt>
<dd><p>解析字符串 <em>data</em> 的内容,调用适当的处理函数来处理解析后的数据。 在对此方法的最后一次调用时 <em>isfinal</em> 必须为真值;它允许以片段形式解析单个文件,而不是提交多个文件。 <em>data</em> 在任何时候都可以为空字符串。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.ParseFile">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ParseFile</code><span class="sig-paren">(</span><em class="sig-param">file</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.ParseFile" title="永久链接至目标"></a></dt>
<dd><p>解析从对象 <em>file</em> 读取的 XML 数据。 <em>file</em> 仅需提供 <code class="docutils literal notranslate"><span class="pre">read(nbytes)</span></code> 方法,当没有更多数据可读时将返回空字符串。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.SetBase">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">SetBase</code><span class="sig-paren">(</span><em class="sig-param">base</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.SetBase" title="永久链接至目标"></a></dt>
<dd><p>设置要用于解析声明中的系统标识符的相对 URI 的基准。 解析相对标识符的任务会留给应用程序进行:这个值将作为 <em>base</em> 参数传递给 <a class="reference internal" href="#xml.parsers.expat.xmlparser.ExternalEntityRefHandler" title="xml.parsers.expat.xmlparser.ExternalEntityRefHandler"><code class="xref py py-func docutils literal notranslate"><span class="pre">ExternalEntityRefHandler()</span></code></a>, <a class="reference internal" href="#xml.parsers.expat.xmlparser.NotationDeclHandler" title="xml.parsers.expat.xmlparser.NotationDeclHandler"><code class="xref py py-func docutils literal notranslate"><span class="pre">NotationDeclHandler()</span></code></a><a class="reference internal" href="#xml.parsers.expat.xmlparser.UnparsedEntityDeclHandler" title="xml.parsers.expat.xmlparser.UnparsedEntityDeclHandler"><code class="xref py py-func docutils literal notranslate"><span class="pre">UnparsedEntityDeclHandler()</span></code></a> 函数。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.GetBase">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">GetBase</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.GetBase" title="永久链接至目标"></a></dt>
<dd><p>返回包含之前调用 <a class="reference internal" href="#xml.parsers.expat.xmlparser.SetBase" title="xml.parsers.expat.xmlparser.SetBase"><code class="xref py py-meth docutils literal notranslate"><span class="pre">SetBase()</span></code></a> 所设置的基准位置的字符串,或者如果未调用 <a class="reference internal" href="#xml.parsers.expat.xmlparser.SetBase" title="xml.parsers.expat.xmlparser.SetBase"><code class="xref py py-meth docutils literal notranslate"><span class="pre">SetBase()</span></code></a> 则返回 <code class="docutils literal notranslate"><span class="pre">None</span></code></p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.GetInputContext">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">GetInputContext</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.GetInputContext" title="永久链接至目标"></a></dt>
<dd><p>将生成当前事件的输入数据以字符串形式返回。 数据为包含文本的实体的编码格式。 如果被调用时未激活事件处理器,则返回值将为 <code class="docutils literal notranslate"><span class="pre">None</span></code></p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.ExternalEntityParserCreate">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ExternalEntityParserCreate</code><span class="sig-paren">(</span><em class="sig-param">context</em><span class="optional">[</span>, <em class="sig-param">encoding</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.ExternalEntityParserCreate" title="永久链接至目标"></a></dt>
<dd><p>创建一个“子”解析器,可被用来解析由父解析器解析的内容所引用的外部解析实体。 <em>context</em> 形参应当是传递给 <a class="reference internal" href="#xml.parsers.expat.xmlparser.ExternalEntityRefHandler" title="xml.parsers.expat.xmlparser.ExternalEntityRefHandler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">ExternalEntityRefHandler()</span></code></a> 处理函数的字符串,具体如下所述。 子解析器创建时 <a class="reference internal" href="#xml.parsers.expat.xmlparser.ordered_attributes" title="xml.parsers.expat.xmlparser.ordered_attributes"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ordered_attributes</span></code></a><a class="reference internal" href="#xml.parsers.expat.xmlparser.specified_attributes" title="xml.parsers.expat.xmlparser.specified_attributes"><code class="xref py py-attr docutils literal notranslate"><span class="pre">specified_attributes</span></code></a> 会被设为此解析器的值。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.SetParamEntityParsing">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">SetParamEntityParsing</code><span class="sig-paren">(</span><em class="sig-param">flag</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.SetParamEntityParsing" title="永久链接至目标"></a></dt>
<dd><p>控制参数实体(包括外部 DTD 子集)的解析。 可能的 <em>flag</em> 值有 <code class="xref py py-const docutils literal notranslate"><span class="pre">XML_PARAM_ENTITY_PARSING_NEVER</span></code>, <code class="xref py py-const docutils literal notranslate"><span class="pre">XML_PARAM_ENTITY_PARSING_UNLESS_STANDALONE</span></code><code class="xref py py-const docutils literal notranslate"><span class="pre">XML_PARAM_ENTITY_PARSING_ALWAYS</span></code>。 如果该旗标设置成功则返回真值。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.UseForeignDTD">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">UseForeignDTD</code><span class="sig-paren">(</span><span class="optional">[</span><em class="sig-param">flag</em><span class="optional">]</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.UseForeignDTD" title="永久链接至目标"></a></dt>
<dd><p>调用时将 <em>flag</em> 设为真值(默认)将导致 Expat 调用 <a class="reference internal" href="#xml.parsers.expat.xmlparser.ExternalEntityRefHandler" title="xml.parsers.expat.xmlparser.ExternalEntityRefHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ExternalEntityRefHandler</span></code></a> 时将所有参数设为 <a class="reference internal" href="constants.html#None" title="None"><code class="xref py py-const docutils literal notranslate"><span class="pre">None</span></code></a> 以允许加载替代的 DTD。 如果文档不包含文档类型声明,<a class="reference internal" href="#xml.parsers.expat.xmlparser.ExternalEntityRefHandler" title="xml.parsers.expat.xmlparser.ExternalEntityRefHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ExternalEntityRefHandler</span></code></a> 仍然会被调用,但 <a class="reference internal" href="#xml.parsers.expat.xmlparser.StartDoctypeDeclHandler" title="xml.parsers.expat.xmlparser.StartDoctypeDeclHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">StartDoctypeDeclHandler</span></code></a><a class="reference internal" href="#xml.parsers.expat.xmlparser.EndDoctypeDeclHandler" title="xml.parsers.expat.xmlparser.EndDoctypeDeclHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">EndDoctypeDeclHandler</span></code></a> 将不会被调用。</p>
<p><em>flag</em> 传入假值将将撤消之前传入真值的调用,除此之外没有其他影响。</p>
<p>此方法只能在调用 <a class="reference internal" href="#xml.parsers.expat.xmlparser.Parse" title="xml.parsers.expat.xmlparser.Parse"><code class="xref py py-meth docutils literal notranslate"><span class="pre">Parse()</span></code></a><a class="reference internal" href="#xml.parsers.expat.xmlparser.ParseFile" title="xml.parsers.expat.xmlparser.ParseFile"><code class="xref py py-meth docutils literal notranslate"><span class="pre">ParseFile()</span></code></a> 方法之前被调用;在已调用过这两个方法之后调用它会导致引发 <a class="reference internal" href="#xml.parsers.expat.ExpatError" title="xml.parsers.expat.ExpatError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ExpatError</span></code></a><a class="reference internal" href="code.html#module-code" title="code: Facilities to implement read-eval-print loops."><code class="xref py py-attr docutils literal notranslate"><span class="pre">code</span></code></a> 属性被设为 <code class="docutils literal notranslate"><span class="pre">errors.codes[errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING]</span></code></p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.SetReparseDeferralEnabled">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">SetReparseDeferralEnabled</code><span class="sig-paren">(</span><em class="sig-param">enabled</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.SetReparseDeferralEnabled" title="永久链接至目标"></a></dt>
<dd><div class="admonition warning">
<p class="admonition-title">警告</p>
<p>调用 <code class="docutils literal notranslate"><span class="pre">SetReparseDeferralEnabled(False)</span></code> 会对安全产生影响,详情见下文;在使用 <code class="docutils literal notranslate"><span class="pre">SetReparseDeferralEnabled</span></code> 方法之前请务必了解这些后果。</p>
</div>
<p>Expat 2.6.0 引入了一种名为“重新解析延迟”的安全机制,这种机制不会发生因重新解析大量词元的指数级运行时而导致的拒绝服务,而是会在默认情况下延迟对未完成词元的重新解析直到达到足够的输入量。 由于这种延迟,已注册的处理器有可能 —— 具体取决于推送到 Expat 的输入块大小 —— 不会在向解析器 推送新输入后立即被调用。 如果希望获得即时反馈并接管防止大量词元导致拒绝服务的责任,可以调用 <code class="docutils literal notranslate"><span class="pre">SetReparseDeferralEnabled(False)</span></code> 暂时或完全禁用当前 Expat 解析器实例的重解析延迟。 调用 <code class="docutils literal notranslate"><span class="pre">SetReparseDeferralEnabled(True)</span></code> 将再次启用重新解析延迟。</p>
<p>请注意 <a class="reference internal" href="#xml.parsers.expat.xmlparser.SetReparseDeferralEnabled" title="xml.parsers.expat.xmlparser.SetReparseDeferralEnabled"><code class="xref py py-meth docutils literal notranslate"><span class="pre">SetReparseDeferralEnabled()</span></code></a> 已作为安全修正被向下移植到一些较早的 CPython 发布版。 如果在运行于多个 Python 版本的代码中要用到 <a class="reference internal" href="#xml.parsers.expat.xmlparser.SetReparseDeferralEnabled" title="xml.parsers.expat.xmlparser.SetReparseDeferralEnabled"><code class="xref py py-meth docutils literal notranslate"><span class="pre">SetReparseDeferralEnabled()</span></code></a> 请使用 <a class="reference internal" href="functions.html#hasattr" title="hasattr"><code class="xref py py-func docutils literal notranslate"><span class="pre">hasattr()</span></code></a> 来检查其可用性。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.8.19 新版功能.</span></p>
</div>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.GetReparseDeferralEnabled">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">GetReparseDeferralEnabled</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.GetReparseDeferralEnabled" title="永久链接至目标"></a></dt>
<dd><p>返回当前是否为给定的 Expat 解析器实例启用了重新解析延迟。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.8.19 新版功能.</span></p>
</div>
</dd></dl>
<p><code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code> 对象具有下列属性:</p>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.buffer_size">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">buffer_size</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.buffer_size" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="#xml.parsers.expat.xmlparser.buffer_text" title="xml.parsers.expat.xmlparser.buffer_text"><code class="xref py py-attr docutils literal notranslate"><span class="pre">buffer_text</span></code></a> 为真值时所使用的缓冲区大小。 可以通过将此属性赋一个新的整数值来设置一个新的缓冲区大小。 当大小发生改变时,缓冲区将被刷新。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.buffer_text">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">buffer_text</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.buffer_text" title="永久链接至目标"></a></dt>
<dd><p>将此属性设为真值会使得 <code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code> 对象缓冲 Expat 所返回的文本内容以尽可能地避免多次调用 <a class="reference internal" href="#xml.parsers.expat.xmlparser.CharacterDataHandler" title="xml.parsers.expat.xmlparser.CharacterDataHandler"><code class="xref py py-meth docutils literal notranslate"><span class="pre">CharacterDataHandler()</span></code></a> 回调。 这可以显著地提升性能,因为 Expat 通常会将字符数据在每个行结束的位置上进行分块。 此属性默认为假值,但可以在任何时候被更改。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.buffer_used">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">buffer_used</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.buffer_used" title="永久链接至目标"></a></dt>
<dd><p><a class="reference internal" href="#xml.parsers.expat.xmlparser.buffer_text" title="xml.parsers.expat.xmlparser.buffer_text"><code class="xref py py-attr docutils literal notranslate"><span class="pre">buffer_text</span></code></a> 被启用时,缓冲区中存储的字节数。 这些字节数据表示以 UTF-8 编码的文本。 当 <a class="reference internal" href="#xml.parsers.expat.xmlparser.buffer_text" title="xml.parsers.expat.xmlparser.buffer_text"><code class="xref py py-attr docutils literal notranslate"><span class="pre">buffer_text</span></code></a> 为假值时此属性没有任何实际意义。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.ordered_attributes">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ordered_attributes</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.ordered_attributes" title="永久链接至目标"></a></dt>
<dd><p>将该属性设为非零整数会使得各个属性被报告为列表而非字典。 各个属性会按照在文档文本中的出现顺序显示。 对于每个属性,将显示两个列表条目:属性名和属性值。 (该模块的较旧版本也使用了此格式。) 默认情况下,该属性为假值;它可以在任何时候被更改。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.specified_attributes">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">specified_attributes</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.specified_attributes" title="永久链接至目标"></a></dt>
<dd><p>如果设为非零整数,解析器将只报告在文档实例中指明的属性而不报告来自属性声明的属性。 设置此属性的应用程序需要特别小心地使用从声明中获得的附加信息以符合 XML 处理程序的行为标准。 默认情况下,该属性为假值;它可以在任何时候被更改。</p>
</dd></dl>
<p>下列属性包含与 <code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code> 对象遇到的最近发生的错误有关联的值,并且一旦对 <code class="xref py py-meth docutils literal notranslate"><span class="pre">Parse()</span></code><code class="xref py py-meth docutils literal notranslate"><span class="pre">ParseFile()</span></code> 的调用引发了 <a class="reference internal" href="#xml.parsers.expat.ExpatError" title="xml.parsers.expat.ExpatError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">xml.parsers.expat.ExpatError</span></code></a> 异常就将只包含正确的值。</p>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.ErrorByteIndex">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ErrorByteIndex</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.ErrorByteIndex" title="永久链接至目标"></a></dt>
<dd><p>错误发生位置的字节索引号。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.ErrorCode">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ErrorCode</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.ErrorCode" title="永久链接至目标"></a></dt>
<dd><p>指明问题的的数字代码。 该值可被传给 <a class="reference internal" href="#xml.parsers.expat.ErrorString" title="xml.parsers.expat.ErrorString"><code class="xref py py-func docutils literal notranslate"><span class="pre">ErrorString()</span></code></a> 函数,或是与在 <code class="docutils literal notranslate"><span class="pre">errors</span></code> 对象中定义的常量之一进行比较。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.ErrorColumnNumber">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ErrorColumnNumber</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.ErrorColumnNumber" title="永久链接至目标"></a></dt>
<dd><p>错误发生位置的列号。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.ErrorLineNumber">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ErrorLineNumber</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.ErrorLineNumber" title="永久链接至目标"></a></dt>
<dd><p>错误发生位置的行号。</p>
</dd></dl>
<p>下列属性包含 <code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code> 对象中关联到当前解析位置的值。 在回调报告解析事件期间它们将指示生成事件的字符序列的第一个字符的位置。 当在回调的外部被调用时,所指示的位置将恰好位于最后的解析事件之后(无论是否存在关联的回调)。</p>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.CurrentByteIndex">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">CurrentByteIndex</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.CurrentByteIndex" title="永久链接至目标"></a></dt>
<dd><p>解析器输入的当前字节索引号。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.CurrentColumnNumber">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">CurrentColumnNumber</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.CurrentColumnNumber" title="永久链接至目标"></a></dt>
<dd><p>解析器输入的当前列号。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.xmlparser.CurrentLineNumber">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">CurrentLineNumber</code><a class="headerlink" href="#xml.parsers.expat.xmlparser.CurrentLineNumber" title="永久链接至目标"></a></dt>
<dd><p>解析器输入的当前行号。</p>
</dd></dl>
<p>可被设置的处理器列表。 要在一个 <code class="xref py py-class docutils literal notranslate"><span class="pre">xmlparser</span></code> 对象 <em>o</em> 上设置处理器,请使用 <code class="docutils literal notranslate"><span class="pre">o.handlername</span> <span class="pre">=</span> <span class="pre">func</span></code><em>handlername</em> 必须从下面的列表中获取,而 <em>func</em> 必须为接受正确数量参数的可调用对象。 所有参数均为字符串,除非另外指明。</p>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.XmlDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">XmlDeclHandler</code><span class="sig-paren">(</span><em class="sig-param">version</em>, <em class="sig-param">encoding</em>, <em class="sig-param">standalone</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.XmlDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>当解析 XML 声明时被调用。 XML 声明是 XML 建议适用版本、文档文本的编码格式,以及可选的“独立”声明的(可选)声明。 <em>version</em><em>encoding</em> 将为字符串,而 <em>standalone</em> 在文档被声明为独立时将为 <code class="docutils literal notranslate"><span class="pre">1</span></code>,在文档被声明为非独立时将为 <code class="docutils literal notranslate"><span class="pre">0</span></code>,或者在 standalone 短语被省略时则为 <code class="docutils literal notranslate"><span class="pre">-1</span></code>。 这仅适用于 Expat 的 1.95.0 或更新版本。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.StartDoctypeDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">StartDoctypeDeclHandler</code><span class="sig-paren">(</span><em class="sig-param">doctypeName</em>, <em class="sig-param">systemId</em>, <em class="sig-param">publicId</em>, <em class="sig-param">has_internal_subset</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.StartDoctypeDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>当 Expat 开始解析文档类型声明 (<code class="docutils literal notranslate"><span class="pre">&lt;!DOCTYPE</span> <span class="pre">...</span></code>) 时被调用。 <em>doctypeName</em> 会完全按所显示的被提供。 <em>systemId</em><em>publicId</em> 形参给出所指定的系统和公有标识符,如果被省略则为 <code class="docutils literal notranslate"><span class="pre">None</span></code>。 如果文档包含内部文档声明子集则 <em>has_internal_subset</em> 将为真值。 这要求 Expat 1.2 或更新的版本。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.EndDoctypeDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">EndDoctypeDeclHandler</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.EndDoctypeDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>当 Expat 完成解析文档类型声明时被调用。 这要求 Expat 1.2 或更新版本。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.ElementDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ElementDeclHandler</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">model</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.ElementDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>为每个元素类型声明调用一次。 <em>name</em> 为元素类型名称,而 <em>model</em> 为内容模型的表示形式。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.AttlistDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">AttlistDeclHandler</code><span class="sig-paren">(</span><em class="sig-param">elname</em>, <em class="sig-param">attname</em>, <em class="sig-param">type</em>, <em class="sig-param">default</em>, <em class="sig-param">required</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.AttlistDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>为一个元素类型的每个已声明属性执行调用。 如果一个属性列表声明声明了三个属性,这个处理器会被调用三次,每个属性一次。 <em>elname</em> 是声明所适用的元素的名称而 <em>attname</em> 是已声明的属性的名称。 属性类型是作为 <em>type</em> 传入的字符串;可能的值有 <code class="docutils literal notranslate"><span class="pre">'CDATA'</span></code>, <code class="docutils literal notranslate"><span class="pre">'ID'</span></code>, <code class="docutils literal notranslate"><span class="pre">'IDREF'</span></code>, ... <em>default</em> 给出了当属性未被文档实例所指明时该属性的默认值,或是为 <code class="docutils literal notranslate"><span class="pre">None</span></code>,如果没有默认值 (<code class="docutils literal notranslate"><span class="pre">#IMPLIED</span></code> 值) 的话。 如果属性必须在文档实例中给出,则 <em>required</em> 将为真值。 这要求 Expat 1.95.0 或更新的版本。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.StartElementHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">StartElementHandler</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">attributes</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.StartElementHandler" title="永久链接至目标"></a></dt>
<dd><p>在每个元素开始时调用。 <em>name</em> 是包含元素名称的字符串,而 <em>attributes</em> 是元素的属性。 如果 <a class="reference internal" href="#xml.parsers.expat.xmlparser.ordered_attributes" title="xml.parsers.expat.xmlparser.ordered_attributes"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ordered_attributes</span></code></a> 为真值,则属性为列表形式 (完整描述参见 <a class="reference internal" href="#xml.parsers.expat.xmlparser.ordered_attributes" title="xml.parsers.expat.xmlparser.ordered_attributes"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ordered_attributes</span></code></a>)。 否则为将名称映射到值的字典。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.EndElementHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">EndElementHandler</code><span class="sig-paren">(</span><em class="sig-param">name</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.EndElementHandler" title="永久链接至目标"></a></dt>
<dd><p>在每个元素结束时调用。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.ProcessingInstructionHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ProcessingInstructionHandler</code><span class="sig-paren">(</span><em class="sig-param">target</em>, <em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.ProcessingInstructionHandler" title="永久链接至目标"></a></dt>
<dd><p>在每次处理指令时调用。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.CharacterDataHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">CharacterDataHandler</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.CharacterDataHandler" title="永久链接至目标"></a></dt>
<dd><p>针对字符数据调用。 此方法将被用于普通字符数据、CDATA 标记内容以及可忽略的空白符。 需要区分这几种情况的应用程序可以使用 <a class="reference internal" href="#xml.parsers.expat.xmlparser.StartCdataSectionHandler" title="xml.parsers.expat.xmlparser.StartCdataSectionHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">StartCdataSectionHandler</span></code></a>, <a class="reference internal" href="#xml.parsers.expat.xmlparser.EndCdataSectionHandler" title="xml.parsers.expat.xmlparser.EndCdataSectionHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">EndCdataSectionHandler</span></code></a><a class="reference internal" href="#xml.parsers.expat.xmlparser.ElementDeclHandler" title="xml.parsers.expat.xmlparser.ElementDeclHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">ElementDeclHandler</span></code></a> 回调来收集必要的信息。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.UnparsedEntityDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">UnparsedEntityDeclHandler</code><span class="sig-paren">(</span><em class="sig-param">entityName</em>, <em class="sig-param">base</em>, <em class="sig-param">systemId</em>, <em class="sig-param">publicId</em>, <em class="sig-param">notationName</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.UnparsedEntityDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>针对未解析NDATA实体声明调用。 此方法仅存在于 Expat 库的 1. 2 版;对于更新的版本,请改用 <a class="reference internal" href="#xml.parsers.expat.xmlparser.EntityDeclHandler" title="xml.parsers.expat.xmlparser.EntityDeclHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">EntityDeclHandler</span></code></a>。 (下层 Expat 库中的对应函数已被声明为过时。)</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.EntityDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">EntityDeclHandler</code><span class="sig-paren">(</span><em class="sig-param">entityName</em>, <em class="sig-param">is_parameter_entity</em>, <em class="sig-param">value</em>, <em class="sig-param">base</em>, <em class="sig-param">systemId</em>, <em class="sig-param">publicId</em>, <em class="sig-param">notationName</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.EntityDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>针对所有实体声明被调用。 对于形参和内部实体,<em>value</em> 将为给出实体的声明内容的字符串;对于外部实体将为 <code class="docutils literal notranslate"><span class="pre">None</span></code><em>notationName</em> 形参对于已解析实体将为 <code class="docutils literal notranslate"><span class="pre">None</span></code>,对于未解析实体则为标注的名称。 如果实体为形参实体则 <em>is_parameter_entity</em> 将为真值而如果为普通实体则为假值(大多数应用程序只需要关注普通实体)。 此方法仅从 1.95.0 版 Expat 库开始才可用。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.NotationDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">NotationDeclHandler</code><span class="sig-paren">(</span><em class="sig-param">notationName</em>, <em class="sig-param">base</em>, <em class="sig-param">systemId</em>, <em class="sig-param">publicId</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.NotationDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>针对标注声明被调用。 <em>notationName</em>, <em>base</em>, <em>systemId</em><em>publicId</em> 如果给出则均应为字符串。 如果省略公有标识符,则 <em>publicId</em> 将为 <code class="docutils literal notranslate"><span class="pre">None</span></code></p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.StartNamespaceDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">StartNamespaceDeclHandler</code><span class="sig-paren">(</span><em class="sig-param">prefix</em>, <em class="sig-param">uri</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.StartNamespaceDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>当一个元素包含命名空间声明时被调用。 命名空间声明会在为声明所在的元素调用 <a class="reference internal" href="#xml.parsers.expat.xmlparser.StartElementHandler" title="xml.parsers.expat.xmlparser.StartElementHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">StartElementHandler</span></code></a> 之前被处理。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.EndNamespaceDeclHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">EndNamespaceDeclHandler</code><span class="sig-paren">(</span><em class="sig-param">prefix</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.EndNamespaceDeclHandler" title="永久链接至目标"></a></dt>
<dd><p>当到达包含命名空间声明的元素的关闭标记时被调用。 此方法会按照调用 <a class="reference internal" href="#xml.parsers.expat.xmlparser.StartNamespaceDeclHandler" title="xml.parsers.expat.xmlparser.StartNamespaceDeclHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">StartNamespaceDeclHandler</span></code></a> 以指明每个命名空间作用域的开始的逆顺序为元素上的每个命名空间声明调用一次。 对这个处理器的调用是在相应的 <a class="reference internal" href="#xml.parsers.expat.xmlparser.EndElementHandler" title="xml.parsers.expat.xmlparser.EndElementHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">EndElementHandler</span></code></a> 之后针对元素的结束而进行的。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.CommentHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">CommentHandler</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.CommentHandler" title="永久链接至目标"></a></dt>
<dd><p>针对注释被调用。 <em>data</em> 是注释的文本,不包括开头的 <code class="docutils literal notranslate"><span class="pre">'&lt;!-</span></code><code class="docutils literal notranslate"><span class="pre">-'</span></code> 和末尾的 <code class="docutils literal notranslate"><span class="pre">'-</span></code><code class="docutils literal notranslate"><span class="pre">-&gt;'</span></code></p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.StartCdataSectionHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">StartCdataSectionHandler</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.StartCdataSectionHandler" title="永久链接至目标"></a></dt>
<dd><p>在一个 CDATA 节的开头被调用。 需要此方法和 <a class="reference internal" href="#xml.parsers.expat.xmlparser.EndCdataSectionHandler" title="xml.parsers.expat.xmlparser.EndCdataSectionHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">EndCdataSectionHandler</span></code></a> 以便能够标识 CDATA 节的语法开始和结束。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.EndCdataSectionHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">EndCdataSectionHandler</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.EndCdataSectionHandler" title="永久链接至目标"></a></dt>
<dd><p>在一个 CDATA 节的末尾被调用。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.DefaultHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">DefaultHandler</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.DefaultHandler" title="永久链接至目标"></a></dt>
<dd><p>针对 XML 文档中没有指定适用处理器的任何字符被调用。 这包括了所有属于可被报告的结构的一部分,但未提供处理器的字符。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.DefaultHandlerExpand">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">DefaultHandlerExpand</code><span class="sig-paren">(</span><em class="sig-param">data</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.DefaultHandlerExpand" title="永久链接至目标"></a></dt>
<dd><p>这与 <a class="reference internal" href="#xml.parsers.expat.xmlparser.DefaultHandler" title="xml.parsers.expat.xmlparser.DefaultHandler"><code class="xref py py-func docutils literal notranslate"><span class="pre">DefaultHandler()</span></code></a> 相同,但不会抑制内部实体的扩展。 实体引用将不会被传递给默认处理器。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.NotStandaloneHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">NotStandaloneHandler</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.NotStandaloneHandler" title="永久链接至目标"></a></dt>
<dd><p>当 XML 文档未被声明为独立文档时被调用。 这种情况发生在出现外部子集或对参数实体的引用,但 XML 声明没有在 XML 声明中将 standalone 设为 <code class="docutils literal notranslate"><span class="pre">yes</span></code> 的时候。 如果这个处理器返回 <code class="docutils literal notranslate"><span class="pre">0</span></code>,那么解析器将引发 <code class="xref py py-const docutils literal notranslate"><span class="pre">XML_ERROR_NOT_STANDALONE</span></code> 错误。 如果这个处理器没有被设置,那么解析器就不会为这个条件引发任何异常。</p>
</dd></dl>
<dl class="method">
<dt id="xml.parsers.expat.xmlparser.ExternalEntityRefHandler">
<code class="sig-prename descclassname">xmlparser.</code><code class="sig-name descname">ExternalEntityRefHandler</code><span class="sig-paren">(</span><em class="sig-param">context</em>, <em class="sig-param">base</em>, <em class="sig-param">systemId</em>, <em class="sig-param">publicId</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.parsers.expat.xmlparser.ExternalEntityRefHandler" title="永久链接至目标"></a></dt>
<dd><p>为对外部实体的引用执行调用。 <em>base</em> 为当前的基准,由之前对 <a class="reference internal" href="#xml.parsers.expat.xmlparser.SetBase" title="xml.parsers.expat.xmlparser.SetBase"><code class="xref py py-meth docutils literal notranslate"><span class="pre">SetBase()</span></code></a> 的调用设置。 公有和系统标识符 <em>systemId</em><em>publicId</em> 如果给出则圴为字符串;如果公有标识符未给出,则 <em>publicId</em> 将为 <code class="docutils literal notranslate"><span class="pre">None</span></code><em>context</em> 是仅根据以下说明来使用的不透明值。</p>
<p>对于要解析的外部实体,这个处理器必须被实现。 它负责使用 <code class="docutils literal notranslate"><span class="pre">ExternalEntityParserCreate(context)</span></code> 来创建子解析器,通过适当的回调将其初始化,并对实体进行解析。 这个处理器应当返回一个整数;如果它返回 <code class="docutils literal notranslate"><span class="pre">0</span></code>,则解析器将引发 <code class="xref py py-const docutils literal notranslate"><span class="pre">XML_ERROR_EXTERNAL_ENTITY_HANDLING</span></code> 错误,否则解析将会继续。</p>
<p>如果未提供这个处理器,外部实体会由 <a class="reference internal" href="#xml.parsers.expat.xmlparser.DefaultHandler" title="xml.parsers.expat.xmlparser.DefaultHandler"><code class="xref py py-attr docutils literal notranslate"><span class="pre">DefaultHandler</span></code></a> 回调来报告,如果提供了该回调的话。</p>
</dd></dl>
</section>
<section id="expaterror-exceptions">
<span id="expaterror-objects"></span><h2>ExpatError 异常<a class="headerlink" href="#expaterror-exceptions" title="永久链接至标题"></a></h2>
<p><a class="reference internal" href="#xml.parsers.expat.ExpatError" title="xml.parsers.expat.ExpatError"><code class="xref py py-exc docutils literal notranslate"><span class="pre">ExpatError</span></code></a> 异常包含几个有趣的属性:</p>
<dl class="attribute">
<dt id="xml.parsers.expat.ExpatError.code">
<code class="sig-prename descclassname">ExpatError.</code><code class="sig-name descname">code</code><a class="headerlink" href="#xml.parsers.expat.ExpatError.code" title="永久链接至目标"></a></dt>
<dd><p>Expat 对于指定错误的内部错误号。 <a class="reference internal" href="#xml.parsers.expat.errors.messages" title="xml.parsers.expat.errors.messages"><code class="xref py py-data docutils literal notranslate"><span class="pre">errors.messages</span></code></a> 字典会将这些错误号映射到 Expat 的错误消息。 例如:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">from</span> <span class="nn">xml.parsers.expat</span> <span class="kn">import</span> <span class="n">ParserCreate</span><span class="p">,</span> <span class="n">ExpatError</span><span class="p">,</span> <span class="n">errors</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">ParserCreate</span><span class="p">()</span>
<span class="k">try</span><span class="p">:</span>
<span class="n">p</span><span class="o">.</span><span class="n">Parse</span><span class="p">(</span><span class="n">some_xml_document</span><span class="p">)</span>
<span class="k">except</span> <span class="n">ExpatError</span> <span class="k">as</span> <span class="n">err</span><span class="p">:</span>
<span class="nb">print</span><span class="p">(</span><span class="s2">&quot;Error:&quot;</span><span class="p">,</span> <span class="n">errors</span><span class="o">.</span><span class="n">messages</span><span class="p">[</span><span class="n">err</span><span class="o">.</span><span class="n">code</span><span class="p">])</span>
</pre></div>
</div>
<p><a class="reference internal" href="#module-xml.parsers.expat.errors" title="xml.parsers.expat.errors"><code class="xref py py-mod docutils literal notranslate"><span class="pre">errors</span></code></a> 模块也提供了一些错误消息常量和一个将这些消息映射回错误码的字典 <a class="reference internal" href="#xml.parsers.expat.errors.codes" title="xml.parsers.expat.errors.codes"><code class="xref py py-data docutils literal notranslate"><span class="pre">codes</span></code></a>,参见下文。</p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.ExpatError.lineno">
<code class="sig-prename descclassname">ExpatError.</code><code class="sig-name descname">lineno</code><a class="headerlink" href="#xml.parsers.expat.ExpatError.lineno" title="永久链接至目标"></a></dt>
<dd><p>检测到错误所在的行号。 首行的行号为 <code class="docutils literal notranslate"><span class="pre">1</span></code></p>
</dd></dl>
<dl class="attribute">
<dt id="xml.parsers.expat.ExpatError.offset">
<code class="sig-prename descclassname">ExpatError.</code><code class="sig-name descname">offset</code><a class="headerlink" href="#xml.parsers.expat.ExpatError.offset" title="永久链接至目标"></a></dt>
<dd><p>错误发生在行中的字符偏移量。 首列的列号为 <code class="docutils literal notranslate"><span class="pre">0</span></code></p>
</dd></dl>
</section>
<section id="example">
<span id="expat-example"></span><h2>示例<a class="headerlink" href="#example" title="永久链接至标题"></a></h2>
<p>以下程序定义了三个处理器,会简单地打印出它们的参数。:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="kn">import</span> <span class="nn">xml.parsers.expat</span>
<span class="c1"># 3 handler functions</span>
<span class="k">def</span> <span class="nf">start_element</span><span class="p">(</span><span class="n">name</span><span class="p">,</span> <span class="n">attrs</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Start element:&#39;</span><span class="p">,</span> <span class="n">name</span><span class="p">,</span> <span class="n">attrs</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">end_element</span><span class="p">(</span><span class="n">name</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;End element:&#39;</span><span class="p">,</span> <span class="n">name</span><span class="p">)</span>
<span class="k">def</span> <span class="nf">char_data</span><span class="p">(</span><span class="n">data</span><span class="p">):</span>
<span class="nb">print</span><span class="p">(</span><span class="s1">&#39;Character data:&#39;</span><span class="p">,</span> <span class="nb">repr</span><span class="p">(</span><span class="n">data</span><span class="p">))</span>
<span class="n">p</span> <span class="o">=</span> <span class="n">xml</span><span class="o">.</span><span class="n">parsers</span><span class="o">.</span><span class="n">expat</span><span class="o">.</span><span class="n">ParserCreate</span><span class="p">()</span>
<span class="n">p</span><span class="o">.</span><span class="n">StartElementHandler</span> <span class="o">=</span> <span class="n">start_element</span>
<span class="n">p</span><span class="o">.</span><span class="n">EndElementHandler</span> <span class="o">=</span> <span class="n">end_element</span>
<span class="n">p</span><span class="o">.</span><span class="n">CharacterDataHandler</span> <span class="o">=</span> <span class="n">char_data</span>
<span class="n">p</span><span class="o">.</span><span class="n">Parse</span><span class="p">(</span><span class="s2">&quot;&quot;&quot;&lt;?xml version=&quot;1.0&quot;?&gt;</span>
<span class="s2">&lt;parent id=&quot;top&quot;&gt;&lt;child1 name=&quot;paul&quot;&gt;Text goes here&lt;/child1&gt;</span>
<span class="s2">&lt;child2 name=&quot;fred&quot;&gt;More text&lt;/child2&gt;</span>
<span class="s2">&lt;/parent&gt;&quot;&quot;&quot;</span><span class="p">,</span> <span class="mi">1</span><span class="p">)</span>
</pre></div>
</div>
<p>来自这个程序的输出是:</p>
<div class="highlight-python3 notranslate"><div class="highlight"><pre><span></span><span class="n">Start</span> <span class="n">element</span><span class="p">:</span> <span class="n">parent</span> <span class="p">{</span><span class="s1">&#39;id&#39;</span><span class="p">:</span> <span class="s1">&#39;top&#39;</span><span class="p">}</span>
<span class="n">Start</span> <span class="n">element</span><span class="p">:</span> <span class="n">child1</span> <span class="p">{</span><span class="s1">&#39;name&#39;</span><span class="p">:</span> <span class="s1">&#39;paul&#39;</span><span class="p">}</span>
<span class="n">Character</span> <span class="n">data</span><span class="p">:</span> <span class="s1">&#39;Text goes here&#39;</span>
<span class="n">End</span> <span class="n">element</span><span class="p">:</span> <span class="n">child1</span>
<span class="n">Character</span> <span class="n">data</span><span class="p">:</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span>
<span class="n">Start</span> <span class="n">element</span><span class="p">:</span> <span class="n">child2</span> <span class="p">{</span><span class="s1">&#39;name&#39;</span><span class="p">:</span> <span class="s1">&#39;fred&#39;</span><span class="p">}</span>
<span class="n">Character</span> <span class="n">data</span><span class="p">:</span> <span class="s1">&#39;More text&#39;</span>
<span class="n">End</span> <span class="n">element</span><span class="p">:</span> <span class="n">child2</span>
<span class="n">Character</span> <span class="n">data</span><span class="p">:</span> <span class="s1">&#39;</span><span class="se">\n</span><span class="s1">&#39;</span>
<span class="n">End</span> <span class="n">element</span><span class="p">:</span> <span class="n">parent</span>
</pre></div>
</div>
</section>
<section id="module-xml.parsers.expat.model">
<span id="content-model-descriptions"></span><span id="expat-content-models"></span><h2>内容模型描述<a class="headerlink" href="#module-xml.parsers.expat.model" title="永久链接至标题"></a></h2>
<p>内容模型是使用嵌套的元组来描述的。 每个元素包含四个值:类型、限定符、名称和一个子元组。 子元组就是附加的内容模型描述。</p>
<p>前两个字段的值是在 <a class="reference internal" href="#module-xml.parsers.expat.model" title="xml.parsers.expat.model"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.parsers.expat.model</span></code></a> 模块中定义的常量。 这些常量可分为两组:模型类型组和限定符组。</p>
<p>模型类型组中的常量有:</p>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CTYPE_ANY</code></dt>
<dd><p>模型名称所指定的元素被声明为具有 <code class="docutils literal notranslate"><span class="pre">ANY</span></code> 内容模型。</p>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CTYPE_CHOICE</code></dt>
<dd><p>命名元素允许从几个选项中选择;这被用于 <code class="docutils literal notranslate"><span class="pre">(A</span> <span class="pre">|</span> <span class="pre">B</span> <span class="pre">|</span> <span class="pre">C)</span></code> 形式的内容模型。</p>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CTYPE_EMPTY</code></dt>
<dd><p>被声明为 <code class="docutils literal notranslate"><span class="pre">EMPTY</span></code> 的元素具有此模型类型。</p>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CTYPE_MIXED</code></dt>
<dd></dd></dl>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CTYPE_NAME</code></dt>
<dd></dd></dl>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CTYPE_SEQ</code></dt>
<dd><p>代表彼此相连的一系列模型的模型用此模型类型来指明。 这被用于 <code class="docutils literal notranslate"><span class="pre">(A,</span> <span class="pre">B,</span> <span class="pre">C)</span></code> 形式的模型。</p>
</dd></dl>
<p>限定符组中的常量有:</p>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CQUANT_NONE</code></dt>
<dd><p>未给出限定符,这样它可以只出现一次,例如 <code class="docutils literal notranslate"><span class="pre">A</span></code></p>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CQUANT_OPT</code></dt>
<dd><p>模型是可选的:它可以出现一次或完全不出现,例如 <code class="docutils literal notranslate"><span class="pre">A?</span></code></p>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CQUANT_PLUS</code></dt>
<dd><p>模型必须出现一次或多次 (例如 <code class="docutils literal notranslate"><span class="pre">A+</span></code>)。</p>
</dd></dl>
<dl class="data">
<dt>
<code class="sig-prename descclassname">xml.parsers.expat.model.</code><code class="sig-name descname">XML_CQUANT_REP</code></dt>
<dd><p>模型必须出现零次或多次,例如 <code class="docutils literal notranslate"><span class="pre">A*</span></code></p>
</dd></dl>
</section>
<section id="module-xml.parsers.expat.errors">
<span id="expat-error-constants"></span><span id="expat-errors"></span><h2>Expat 错误常量<a class="headerlink" href="#module-xml.parsers.expat.errors" title="永久链接至标题"></a></h2>
<p>下列常量是在 <a class="reference internal" href="#module-xml.parsers.expat.errors" title="xml.parsers.expat.errors"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.parsers.expat.errors</span></code></a> 模块中提供的。 这些常量在有错误发生时解读被引发的 <code class="xref py py-exc docutils literal notranslate"><span class="pre">ExpatError</span></code> 异常对象的某些属性时很有用处。 出于保持向下兼容性的理由,这些常量的值是错误 <em>消息</em> 而不是数字形式的错误 <em>代码</em>,为此你可以将它的 <a class="reference internal" href="code.html#module-code" title="code: Facilities to implement read-eval-print loops."><code class="xref py py-attr docutils literal notranslate"><span class="pre">code</span></code></a> 属性和 <code class="samp docutils literal notranslate"><span class="pre">errors.codes[errors.XML_ERROR_</span><em><span class="pre">CONSTANT_NAME</span></em><span class="pre">]</span></code> 进行比较。</p>
<p><code class="docutils literal notranslate"><span class="pre">errors</span></code> 模块具有以下属性:</p>
<dl class="data">
<dt id="xml.parsers.expat.errors.codes">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">codes</code><a class="headerlink" href="#xml.parsers.expat.errors.codes" title="永久链接至目标"></a></dt>
<dd><p>将字符串描述映射到其错误代码的字典。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.2 新版功能.</span></p>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.messages">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">messages</code><a class="headerlink" href="#xml.parsers.expat.errors.messages" title="永久链接至目标"></a></dt>
<dd><p>将数字形式的错误代码映射到其字符串描述的字典。</p>
<div class="versionadded">
<p><span class="versionmodified added">3.2 新版功能.</span></p>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITY">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_ASYNC_ENTITY</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_ASYNC_ENTITY" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_ATTRIBUTE_EXTERNAL_ENTITY_REF" title="永久链接至目标"></a></dt>
<dd><p>属性值中指向一个外部实体而非内部实体的实体引用。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REF">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_BAD_CHAR_REF</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_BAD_CHAR_REF" title="永久链接至目标"></a></dt>
<dd><p>指向一个在 XML 不合法的字符的字符引用 (例如,字符 <code class="docutils literal notranslate"><span class="pre">0</span></code> 或 '<code class="docutils literal notranslate"><span class="pre">&amp;#0;</span></code>')。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REF">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_BINARY_ENTITY_REF</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_BINARY_ENTITY_REF" title="永久链接至目标"></a></dt>
<dd><p>指向一个使用标注声明,因而无法被解析的实体的实体引用。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTE">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_DUPLICATE_ATTRIBUTE</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_DUPLICATE_ATTRIBUTE" title="永久链接至目标"></a></dt>
<dd><p>一个属性在一个开始标记中被使用超过一次。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODING">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_INCORRECT_ENCODING</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_INCORRECT_ENCODING" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_INVALID_TOKEN">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_INVALID_TOKEN</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_INVALID_TOKEN" title="永久链接至目标"></a></dt>
<dd><p>当一个输入字节无法被正确分配给一个字符时引发;例如,在 UTF-8 输入流中的 NUL 字节 (值为 <code class="docutils literal notranslate"><span class="pre">0</span></code>)。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_JUNK_AFTER_DOC_ELEMENT</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_JUNK_AFTER_DOC_ELEMENT" title="永久链接至目标"></a></dt>
<dd><p>在文档元素之后出现空白符以外的内容。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PI">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_MISPLACED_XML_PI</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_MISPLACED_XML_PI" title="永久链接至目标"></a></dt>
<dd><p>在输入数据开始位置以外的地方发现 XML 声明。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTS">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_NO_ELEMENTS</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_NO_ELEMENTS" title="永久链接至目标"></a></dt>
<dd><p>文档不包含任何元素XML 要求所有文档都包含恰好一个最高层级元素)。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_NO_MEMORY">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_NO_MEMORY</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_NO_MEMORY" title="永久链接至目标"></a></dt>
<dd><p>Expat 无法在内部分配内存。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REF">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_PARAM_ENTITY_REF</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_PARAM_ENTITY_REF" title="永久链接至目标"></a></dt>
<dd><p>在不被允许的位置发现一个参数实体引用。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHAR">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_PARTIAL_CHAR</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_PARTIAL_CHAR" title="永久链接至目标"></a></dt>
<dd><p>在输入中发出一个不完整的字符。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REF">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_RECURSIVE_ENTITY_REF</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_RECURSIVE_ENTITY_REF" title="永久链接至目标"></a></dt>
<dd><p>一个实体引用包含了对同一实体的另一个引用;可能是通过不同的名称,并可能是间接的引用。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_SYNTAX">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_SYNTAX</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_SYNTAX" title="永久链接至目标"></a></dt>
<dd><p>遇到了某个未指明的语法错误。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCH">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_TAG_MISMATCH</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_TAG_MISMATCH" title="永久链接至目标"></a></dt>
<dd><p>一个结束标记不能匹配到最内层的未关闭开始标记。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKEN">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_UNCLOSED_TOKEN</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_UNCLOSED_TOKEN" title="永久链接至目标"></a></dt>
<dd><p>某些记号(例如开始标记)在流结束或遇到下一个记号之前还未关闭。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITY">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_UNDEFINED_ENTITY</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_UNDEFINED_ENTITY" title="永久链接至目标"></a></dt>
<dd><p>对一个未定义的实体进行了引用。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODING">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_UNKNOWN_ENCODING</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_UNKNOWN_ENCODING" title="永久链接至目标"></a></dt>
<dd><p>文档编码格式不被 Expat 所支持。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTION">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_UNCLOSED_CDATA_SECTION</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_UNCLOSED_CDATA_SECTION" title="永久链接至目标"></a></dt>
<dd><p>一个 CDATA 标记节还未关闭。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLING">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_EXTERNAL_ENTITY_HANDLING</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_EXTERNAL_ENTITY_HANDLING" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONE">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_NOT_STANDALONE</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_NOT_STANDALONE" title="永久链接至目标"></a></dt>
<dd><p>解析器确定文档不是“独立的”但它却在 XML 声明中声明自己是独立的,并且 <code class="xref py py-attr docutils literal notranslate"><span class="pre">NotStandaloneHandler</span></code> 被设置为返回 <code class="docutils literal notranslate"><span class="pre">0</span></code></p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATE">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_UNEXPECTED_STATE</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_UNEXPECTED_STATE" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PE">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_ENTITY_DECLARED_IN_PE</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_ENTITY_DECLARED_IN_PE" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTD">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_FEATURE_REQUIRES_XML_DTD</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_FEATURE_REQUIRES_XML_DTD" title="永久链接至目标"></a></dt>
<dd><p>请求了一个需要已编译 DTD 支持的操作,但 Expat 被配置为不带 DTD 支持。 此错误应当绝对不会被 <a class="reference internal" href="#module-xml.parsers.expat" title="xml.parsers.expat: An interface to the Expat non-validating XML parser."><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.parsers.expat</span></code></a> 模块的标准构建版本所报告。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_CANT_CHANGE_FEATURE_ONCE_PARSING" title="永久链接至目标"></a></dt>
<dd><p>在解析开始之后请求一个只能在解析开始之前执行的行为改变。 此错误(目前)只能由 <code class="xref py py-meth docutils literal notranslate"><span class="pre">UseForeignDTD()</span></code> 所引发。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIX">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_UNBOUND_PREFIX</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_UNBOUND_PREFIX" title="永久链接至目标"></a></dt>
<dd><p>当命名空间处理被启用时发现一个未声明的前缀。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIX">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_UNDECLARING_PREFIX</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_UNDECLARING_PREFIX" title="永久链接至目标"></a></dt>
<dd><p>文档试图移除与某个前缀相关联的命名空间声明。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PE">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_INCOMPLETE_PE</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_INCOMPLETE_PE" title="永久链接至目标"></a></dt>
<dd><p>一个参数实体包含不完整的标记。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_XML_DECL">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_XML_DECL</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_XML_DECL" title="永久链接至目标"></a></dt>
<dd><p>文档完全未包含任何文档元素。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_TEXT_DECL">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_TEXT_DECL</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_TEXT_DECL" title="永久链接至目标"></a></dt>
<dd><p>解析一个外部实体中的文本声明时出现错误。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_PUBLICID">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_PUBLICID</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_PUBLICID" title="永久链接至目标"></a></dt>
<dd><p>在公有 id 中发现不被允许的字符。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_SUSPENDED">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_SUSPENDED</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_SUSPENDED" title="永久链接至目标"></a></dt>
<dd><p>在挂起的解析器上请求执行操作,但未获得允许。 这包括提供额外输入或停止解析器的尝试。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDED">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_NOT_SUSPENDED</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_NOT_SUSPENDED" title="永久链接至目标"></a></dt>
<dd><p>在解析器未被挂起的时候执行恢复解析器的尝试。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_ABORTED">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_ABORTED</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_ABORTED" title="永久链接至目标"></a></dt>
<dd><p>此错误不应当被报告给 Python 应用程序。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_FINISHED">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_FINISHED</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_FINISHED" title="永久链接至目标"></a></dt>
<dd><p>在一个已经完成解析输入的解析器上请求执行操作,但未获得允许。 这包括提供额外输入或停止解析器的尝试。</p>
</dd></dl>
<dl class="data">
<dt id="xml.parsers.expat.errors.XML_ERROR_SUSPEND_PE">
<code class="sig-prename descclassname">xml.parsers.expat.errors.</code><code class="sig-name descname">XML_ERROR_SUSPEND_PE</code><a class="headerlink" href="#xml.parsers.expat.errors.XML_ERROR_SUSPEND_PE" title="永久链接至目标"></a></dt>
<dd></dd></dl>
<p class="rubric">备注</p>
<dl class="footnote brackets">
<dt class="label" id="id3"><span class="brackets"><a class="fn-backref" href="#id1">1</a></span></dt>
<dd><p>包括在 XML 输出中的编码格式字符串应当符合适当的标准。 例如 &quot;UTF-8&quot; 是有效的,但 &quot;UTF8&quot; 是无效的。 请参阅 <a class="reference external" href="https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-EncodingDecl">https://www.w3.org/TR/2006/REC-xml11-20060816/#NT-EncodingDecl</a><a class="reference external" href="https://www.iana.org/assignments/character-sets/character-sets.xhtml">https://www.iana.org/assignments/character-sets/character-sets.xhtml</a></p>
</dd>
</dl>
</section>
</section>
</div>
</div>
</div>
<div class="sphinxsidebar" role="navigation" aria-label="main navigation">
<div class="sphinxsidebarwrapper">
<h3><a href="../contents.html">目录</a></h3>
<ul>
<li><a class="reference internal" href="#"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.parsers.expat</span></code> --- 使用 Expat 的快速 XML 解析</a><ul>
<li><a class="reference internal" href="#xmlparser-objects">XMLParser对象</a></li>
<li><a class="reference internal" href="#expaterror-exceptions">ExpatError 异常</a></li>
<li><a class="reference internal" href="#example">示例</a></li>
<li><a class="reference internal" href="#module-xml.parsers.expat.model">内容模型描述</a></li>
<li><a class="reference internal" href="#module-xml.parsers.expat.errors">Expat 错误常量</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="xml.sax.reader.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.xmlreader</span></code> --- 用于 XML 解析器的接口</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="internet.html"
title="下一章">互联网协议和支持</a></p>
<div role="note" aria-label="source link">
<h3>本页</h3>
<ul class="this-page-menu">
<li><a href="../bugs.html">报告 Bug</a></li>
<li>
<a href="https://github.com/python/cpython/blob/3.8/Doc/library/pyexpat.rst"
rel="nofollow">显示源代码
</a>
</li>
</ul>
</div>
</div>
</div>
<div class="clearer"></div>
</div>
<div class="related" role="navigation" aria-label="related navigation">
<h3>导航</h3>
<ul>
<li class="right" style="margin-right: 10px">
<a href="../genindex.html" title="总目录"
>索引</a></li>
<li class="right" >
<a href="../py-modindex.html" title="Python 模块索引"
>模块</a> |</li>
<li class="right" >
<a href="internet.html" title="互联网协议和支持"
>下一页</a> |</li>
<li class="right" >
<a href="xml.sax.reader.html" title="xml.sax.xmlreader --- 用于 XML 解析器的接口"
>上一页</a> |</li>
<li><img src="../_static/py.svg" alt="python logo" style="vertical-align: middle; margin-top: -1px"/></li>
<li><a href="https://www.python.org/">Python</a> &#187;</li>
<li class="switchers">
<div class="language_switcher_placeholder"></div>
<div class="version_switcher_placeholder"></div>
</li>
<li>
</li>
<li id="cpython-language-and-version">
<a href="../index.html">3.8.20 Documentation</a> &#187;
</li>
<li class="nav-item nav-item-1"><a href="index.html" >Python 标准库</a> &#187;</li>
<li class="nav-item nav-item-2"><a href="markup.html" >结构化标记处理工具</a> &#187;</li>
<li class="right">
<div class="inline-search" role="search">
<form class="inline-search" action="../search.html" method="get">
<input placeholder="快速搜索" aria-label="快速搜索" type="text" name="q" />
<input type="submit" value="转向" />
<input type="hidden" name="check_keywords" value="yes" />
<input type="hidden" name="area" value="default" />
</form>
</div>
|
</li>
</ul>
</div>
<div class="footer">
&copy; <a href="../copyright.html">版权所有</a> 2001-2024, Python Software Foundation.
<br />
This page is licensed under the Python Software Foundation License Version 2.
<br />
Examples, recipes, and other code in the documentation are additionally licensed under the Zero Clause BSD License.
<br />
<br />
The Python Software Foundation is a non-profit corporation.
<a href="https://www.python.org/psf/donations/">Please donate.</a>
<br />
<br />
最后更新于 12月 09, 2024.
<a href="https://docs.python.org/3/bugs.html">Found a bug</a>?
<br />
Created using <a href="https://www.sphinx-doc.org/">Sphinx</a> 2.4.4.
</div>
</body>
</html>