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

581 lines
45 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.sax.handler --- SAX 处理器的基类 &#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="xml.sax.saxutils --- SAX 工具集" href="xml.sax.utils.html" />
<link rel="prev" title="xml.sax --- 支持 SAX2 解析器" href="xml.sax.html" />
<link rel="canonical" href="https://docs.python.org/3/library/xml.sax.handler.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.sax.handler</span></code> --- SAX 处理器的基类</a><ul>
<li><a class="reference internal" href="#contenthandler-objects">ContentHandler 对象</a></li>
<li><a class="reference internal" href="#dtdhandler-objects">DTDHandler 对象</a></li>
<li><a class="reference internal" href="#entityresolver-objects">EntityResolver 对象</a></li>
<li><a class="reference internal" href="#errorhandler-objects">ErrorHandler 对象</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="xml.sax.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax</span></code> --- 支持 SAX2 解析器</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="xml.sax.utils.html"
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.saxutils</span></code> --- SAX 工具集</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/xml.sax.handler.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/xml.sax.handler.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="xml.sax.utils.html" title="xml.sax.saxutils --- SAX 工具集"
accesskey="N">下一页</a> |</li>
<li class="right" >
<a href="xml.sax.html" title="xml.sax --- 支持 SAX2 解析器"
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.sax.handler">
<span id="xml-sax-handler-base-classes-for-sax-handlers"></span><h1><a class="reference internal" href="#module-xml.sax.handler" title="xml.sax.handler: Base classes for SAX event handlers."><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.handler</span></code></a> --- SAX 处理器的基类<a class="headerlink" href="#module-xml.sax.handler" title="永久链接至标题"></a></h1>
<p><strong>源代码:</strong> <a class="reference external" href="https://github.com/python/cpython/tree/3.8/Lib/xml/sax/handler.py">Lib/xml/sax/handler.py</a></p>
<hr class="docutils" />
<p>SAX API 定类了四种处理器内容处理器、DTD 处理器、错误处理器以及实体解析器。 应用程序通常只需要实现他们感兴趣的事件对应的接口;他们可以在单个对象或多个对象中实现这些接口。 处理器的实现应当继承自在 <a class="reference internal" href="#module-xml.sax.handler" title="xml.sax.handler: Base classes for SAX event handlers."><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.handler</span></code></a> 模块中提供的基类,以便所有方法都能获得默认的实现。</p>
<dl class="class">
<dt id="xml.sax.handler.ContentHandler">
<em class="property">class </em><code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">ContentHandler</code><a class="headerlink" href="#xml.sax.handler.ContentHandler" title="永久链接至目标"></a></dt>
<dd><p>这是 SAX 中的主回调接口,也是对应用程序来说最重要的一个接口。 此接口中事件的顺序反映了文档中信息的顺序。</p>
</dd></dl>
<dl class="class">
<dt id="xml.sax.handler.DTDHandler">
<em class="property">class </em><code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">DTDHandler</code><a class="headerlink" href="#xml.sax.handler.DTDHandler" title="永久链接至目标"></a></dt>
<dd><p>处理 DTD 事件。</p>
<p>这个接口仅指定了基本解析(未解析的实体和属性)所需的那些 DTD 事件。</p>
</dd></dl>
<dl class="class">
<dt id="xml.sax.handler.EntityResolver">
<em class="property">class </em><code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">EntityResolver</code><a class="headerlink" href="#xml.sax.handler.EntityResolver" title="永久链接至目标"></a></dt>
<dd><p>用于解析实体的基本接口。 如果你创建了实现此接口的对象,然后用你的解析器注册该对象,该解析器将调用你的对象中的方法来解析所有外部实体。</p>
</dd></dl>
<dl class="class">
<dt id="xml.sax.handler.ErrorHandler">
<em class="property">class </em><code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">ErrorHandler</code><a class="headerlink" href="#xml.sax.handler.ErrorHandler" title="永久链接至目标"></a></dt>
<dd><p>解析器用来向应用程序表示错误和警告的接口。 这个对象的方法控制错误是要立即转换为异常还是以某种其他该来来处理。</p>
</dd></dl>
<p>除了这些类,<a class="reference internal" href="#module-xml.sax.handler" title="xml.sax.handler: Base classes for SAX event handlers."><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.handler</span></code></a> 还提供了表示特性和属性名称的符号常量。</p>
<dl class="data">
<dt id="xml.sax.handler.feature_namespaces">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">feature_namespaces</code><a class="headerlink" href="#xml.sax.handler.feature_namespaces" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/features/namespaces&quot;</span></code></div>
<div class="line">true: 执行命名空间处理。</div>
<div class="line">false: 可选择不执行命名空间处理 (这意味着 namespace-prefixes; default)。</div>
<div class="line">access: (解析) 只读; (不解析) 读/写</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.feature_namespace_prefixes">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">feature_namespace_prefixes</code><a class="headerlink" href="#xml.sax.handler.feature_namespace_prefixes" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/features/namespace-prefixes&quot;</span></code></div>
<div class="line">true: 报告原始的带前缀名称和用于命名空间声明的属性。</div>
<div class="line">false: 不报告用于命名空间声明的属性,可选择不报告原始的带前缀名称(默认)。</div>
<div class="line">access: (解析) 只读; (不解析) 读/写</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.feature_string_interning">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">feature_string_interning</code><a class="headerlink" href="#xml.sax.handler.feature_string_interning" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/features/string-interning&quot;</span></code></div>
<div class="line">true: 所有元素名称、前缀、属性名称、命名空间 URI 以及本地名称都使用内置的 intern 函数进行内化。</div>
<div class="line">false: 名称不要求被内化,但也可以被内化(默认)。</div>
<div class="line">access: (解析) 只读; (不解析) 读/写</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.feature_validation">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">feature_validation</code><a class="headerlink" href="#xml.sax.handler.feature_validation" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/features/validation&quot;</span></code></div>
<div class="line">true: 报告所有的验证错误(包括 external-general-entities 和 external-parameter-entities</div>
<div class="line">false: 不报告验证错误。</div>
<div class="line">access: (解析) 只读; (不解析) 读/写</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.feature_external_ges">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">feature_external_ges</code><a class="headerlink" href="#xml.sax.handler.feature_external_ges" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/features/external-general-entities&quot;</span></code></div>
<div class="line">true: 包括所有的外部通用(文本)实体。</div>
<div class="line">false: 不包括外部通用实体。</div>
<div class="line">access: (解析) 只读; (不解析) 读/写</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.feature_external_pes">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">feature_external_pes</code><a class="headerlink" href="#xml.sax.handler.feature_external_pes" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/features/external-parameter-entities&quot;</span></code></div>
<div class="line">true: 包括所有的外部参数实体,也包括外部 DTD 子集。</div>
<div class="line">false: 不包括任何外部参数实体,也不包括外部 DTD 子集。</div>
<div class="line">access: (解析) 只读; (不解析) 读/写</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.all_features">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">all_features</code><a class="headerlink" href="#xml.sax.handler.all_features" title="永久链接至目标"></a></dt>
<dd><p>全部特性列表。</p>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.property_lexical_handler">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">property_lexical_handler</code><a class="headerlink" href="#xml.sax.handler.property_lexical_handler" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/properties/lexical-handler&quot;</span></code></div>
<div class="line">数据类型: xml.sax.sax2lib.LexicalHandler (在 Python 2 中不受支持)</div>
<div class="line">描述: 可选的扩展处理器,用于注释等词法事件。</div>
<div class="line">访问: 读/写</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.property_declaration_handler">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">property_declaration_handler</code><a class="headerlink" href="#xml.sax.handler.property_declaration_handler" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/properties/declaration-handler&quot;</span></code></div>
<div class="line">数据类型: xml.sax.sax2lib.DeclHandler (在 Python 2 中不受支持)</div>
<div class="line">描述: 可选的扩展处理器,用于标注和未解析实体以外的 DTD 相关事件。</div>
<div class="line">访问: 读/写</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.property_dom_node">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">property_dom_node</code><a class="headerlink" href="#xml.sax.handler.property_dom_node" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/properties/dom-node&quot;</span></code></div>
<div class="line">数据类型: org.w3c.dom.Node (在 Python 2 中不受支持)</div>
<div class="line">描述: 在解析时,如果这是一个 DOM 迭代器则为当前被访问的 DOM 节点;不在解析时,则将根 DOM 节点用于迭代。</div>
<div class="line">access: (解析) 只读; (不解析) 读/写</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.property_xml_string">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">property_xml_string</code><a class="headerlink" href="#xml.sax.handler.property_xml_string" title="永久链接至目标"></a></dt>
<dd><div class="line-block">
<div class="line">值: <code class="docutils literal notranslate"><span class="pre">&quot;http://xml.org/sax/properties/xml-string&quot;</span></code></div>
<div class="line">数据类型: String</div>
<div class="line">描述: 作为当前事件来源的字符串字面值。</div>
<div class="line">访问: 只读</div>
</div>
</dd></dl>
<dl class="data">
<dt id="xml.sax.handler.all_properties">
<code class="sig-prename descclassname">xml.sax.handler.</code><code class="sig-name descname">all_properties</code><a class="headerlink" href="#xml.sax.handler.all_properties" title="永久链接至目标"></a></dt>
<dd><p>已知属性名称列表。</p>
</dd></dl>
<section id="contenthandler-objects">
<span id="content-handler-objects"></span><h2>ContentHandler 对象<a class="headerlink" href="#contenthandler-objects" title="永久链接至标题"></a></h2>
<p>用户应当子类化 <a class="reference internal" href="#xml.sax.handler.ContentHandler" title="xml.sax.handler.ContentHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">ContentHandler</span></code></a> 来支持他们的应用程序。 以下方法会由解析器在输入文档的适当事件上调用:</p>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.setDocumentLocator">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">setDocumentLocator</code><span class="sig-paren">(</span><em class="sig-param">locator</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.setDocumentLocator" title="永久链接至目标"></a></dt>
<dd><p>由解析器调用来给予应用程序一个定位器以确定文档事件来自何处。</p>
<p>强烈建议(虽然不是绝对的要求) SAX 解析器提供一个定位器:如果提供的话,它必须在发起调用 DocumentHandler 接口的任何其他方法之前通过发起调用此方法来提供定位器。</p>
<p>定位器允许应用程序确定任何文档相关事件的结束位置,即使解析器没有报告错误。 通常,应用程序将使用这些信息来报告它自己的错误(例如未匹配到应用程序业务规则的字符内容)。 定位器所返回的信息可能不足以与搜索引擎配合使用。</p>
<p>请注意定位器只有在发起调用此接口中的事件时才会返回正确的信息。 应用程序不应试图在其他任何时刻使用它。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.startDocument">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">startDocument</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.startDocument" title="永久链接至目标"></a></dt>
<dd><p>接收一个文档开始的通知。</p>
<p>SAX 解析器将只发起调用这个方法一次,并且会在调用这个接口或 DTDHandler 中的任何其他方法之前 (<a class="reference internal" href="#xml.sax.handler.ContentHandler.setDocumentLocator" title="xml.sax.handler.ContentHandler.setDocumentLocator"><code class="xref py py-meth docutils literal notranslate"><span class="pre">setDocumentLocator()</span></code></a> 除外)。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.endDocument">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">endDocument</code><span class="sig-paren">(</span><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.endDocument" title="永久链接至目标"></a></dt>
<dd><p>接收一个文档结束的通知。</p>
<p>SAX 解析器将只发起调用这个方法一次,并且它将是在解析过程中最后发起调用的方法。 解析器在(因不可恢复的错误)放弃解析或到达输入的终点之前不应发起调用这个方法。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.startPrefixMapping">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">startPrefixMapping</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.sax.handler.ContentHandler.startPrefixMapping" title="永久链接至目标"></a></dt>
<dd><p>开始一个前缀 URI 命名空间映射的范围。</p>
<p>来自此事件的信息对于一般命名空间处理来说是不必要的:当 <code class="docutils literal notranslate"><span class="pre">feature_namespaces</span></code> 特性被启用时默认SAX XML 读取器将自动为元素和属性名称替换前缀。</p>
<p>但是也存在一些情况,当应用程序需要在字符数据或属性值中使用前缀,而它们无法被安全地自动扩展;<a class="reference internal" href="#xml.sax.handler.ContentHandler.startPrefixMapping" title="xml.sax.handler.ContentHandler.startPrefixMapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">startPrefixMapping()</span></code></a><a class="reference internal" href="#xml.sax.handler.ContentHandler.endPrefixMapping" title="xml.sax.handler.ContentHandler.endPrefixMapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">endPrefixMapping()</span></code></a> 事件会向应用程序提供信息以便在这些上下文内部扩展前缀,如果有必要的话。</p>
<p>请注意 <a class="reference internal" href="#xml.sax.handler.ContentHandler.startPrefixMapping" title="xml.sax.handler.ContentHandler.startPrefixMapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">startPrefixMapping()</span></code></a><a class="reference internal" href="#xml.sax.handler.ContentHandler.endPrefixMapping" title="xml.sax.handler.ContentHandler.endPrefixMapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">endPrefixMapping()</span></code></a> 事件并不保证能够相对彼此被正确地嵌套:所有 <a class="reference internal" href="#xml.sax.handler.ContentHandler.startPrefixMapping" title="xml.sax.handler.ContentHandler.startPrefixMapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">startPrefixMapping()</span></code></a> 事件都将在对应的 <a class="reference internal" href="#xml.sax.handler.ContentHandler.startElement" title="xml.sax.handler.ContentHandler.startElement"><code class="xref py py-meth docutils literal notranslate"><span class="pre">startElement()</span></code></a> 事件之前发生,而所有 <a class="reference internal" href="#xml.sax.handler.ContentHandler.endPrefixMapping" title="xml.sax.handler.ContentHandler.endPrefixMapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">endPrefixMapping()</span></code></a> 事件都将在对应的 <a class="reference internal" href="#xml.sax.handler.ContentHandler.endElement" title="xml.sax.handler.ContentHandler.endElement"><code class="xref py py-meth docutils literal notranslate"><span class="pre">endElement()</span></code></a> 事件之后发生,但它们的并不保证一致。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.endPrefixMapping">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">endPrefixMapping</code><span class="sig-paren">(</span><em class="sig-param">prefix</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.endPrefixMapping" title="永久链接至目标"></a></dt>
<dd><p>结束一个前缀 URI 映射的范围。</p>
<p>请参看 <a class="reference internal" href="#xml.sax.handler.ContentHandler.startPrefixMapping" title="xml.sax.handler.ContentHandler.startPrefixMapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">startPrefixMapping()</span></code></a> 了解详情。 此事件将总是会在对应的 <a class="reference internal" href="#xml.sax.handler.ContentHandler.endElement" title="xml.sax.handler.ContentHandler.endElement"><code class="xref py py-meth docutils literal notranslate"><span class="pre">endElement()</span></code></a> 事件之后发生,但 <a class="reference internal" href="#xml.sax.handler.ContentHandler.endPrefixMapping" title="xml.sax.handler.ContentHandler.endPrefixMapping"><code class="xref py py-meth docutils literal notranslate"><span class="pre">endPrefixMapping()</span></code></a> 事件的顺序则并没有保证。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.startElement">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">startElement</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">attrs</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.startElement" title="永久链接至目标"></a></dt>
<dd><p>在非命令空间模式下指示一个元素的开始。</p>
<p><em>name</em> 形参包含字符串形式的元素类型原始 XML 1.0 名称而 <em>attrs</em> 形参存放包含元素属性的 <code class="xref py py-class docutils literal notranslate"><span class="pre">Attributes</span></code> 接口对象 (参见 <a class="reference internal" href="xml.sax.reader.html#attributes-objects"><span class="std std-ref">Attributes 接口</span></a>)。 作为 <em>attrs</em> 传入的对象可能被解析器所重用;维持一个对它的引用不是保持属性副本的可靠方式。 要保持这些属性的一个副本,请使用 <em>attrs</em> 对象的 <a class="reference internal" href="copy.html#module-copy" title="copy: Shallow and deep copy operations."><code class="xref py py-meth docutils literal notranslate"><span class="pre">copy()</span></code></a> 方法。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.endElement">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">endElement</code><span class="sig-paren">(</span><em class="sig-param">name</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.endElement" title="永久链接至目标"></a></dt>
<dd><p>在非命名空间模式下指示一个元素的结束。</p>
<p><em>name</em> 形参包含元素类型的名称,与 <a class="reference internal" href="#xml.sax.handler.ContentHandler.startElement" title="xml.sax.handler.ContentHandler.startElement"><code class="xref py py-meth docutils literal notranslate"><span class="pre">startElement()</span></code></a> 事件的一样。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.startElementNS">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">startElementNS</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">qname</em>, <em class="sig-param">attrs</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.startElementNS" title="永久链接至目标"></a></dt>
<dd><p>在命名空间模式下指示一个元素的开始。</p>
<p><em>name</em> 形参包含以 <code class="docutils literal notranslate"><span class="pre">(uri,</span> <span class="pre">localname)</span></code> 元组表示的元素类型名称,<em>qname</em> 形参包含源文档中使用的原始 XML 1.0 名称,而 <em>attrs</em> 形参存放包含元素属性的 <code class="xref py py-class docutils literal notranslate"><span class="pre">AttributesNS</span></code> 接口实例 (参见 <a class="reference internal" href="xml.sax.reader.html#attributes-ns-objects"><span class="std std-ref">AttributesNS 接口</span></a>)。 如果没有命名空间被关联到元素,则 <em>name</em><em>uri</em> 部分将为 <code class="docutils literal notranslate"><span class="pre">None</span></code>。 作为 <em>attrs</em> 传入的对象可能被解析器所重用;维持一个对它的引用不是保持属性副本的可靠方式。 要保持这些属性的一个副本,请使用 <em>attrs</em> 对象的 <a class="reference internal" href="copy.html#module-copy" title="copy: Shallow and deep copy operations."><code class="xref py py-meth docutils literal notranslate"><span class="pre">copy()</span></code></a> 方法。</p>
<p>解析器可将 <em>qname</em> 形参设为 <code class="docutils literal notranslate"><span class="pre">None</span></code>,除非 <code class="docutils literal notranslate"><span class="pre">feature_namespace_prefixes</span></code> 特性已被激活。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.endElementNS">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">endElementNS</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">qname</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.endElementNS" title="永久链接至目标"></a></dt>
<dd><p>在命名空间模式下指示一个元素的结束。</p>
<p><em>name</em> 形参包含元素类型的名称,与 <a class="reference internal" href="#xml.sax.handler.ContentHandler.startElementNS" title="xml.sax.handler.ContentHandler.startElementNS"><code class="xref py py-meth docutils literal notranslate"><span class="pre">startElementNS()</span></code></a> 方法的一样,<em>qname</em> 形参也是类似的。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.characters">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">characters</code><span class="sig-paren">(</span><em class="sig-param">content</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.characters" title="永久链接至目标"></a></dt>
<dd><p>接收字符数据的通知。</p>
<p>解析器将调用此方法来报告每一个字符数据分块。 SAX 解析器可以将所有连续字符数据返回为一个单独分块,或者将其拆成几个分块;但是,在任意单个事件中的所有字符都必须来自同一个外部实体以便定位器提供有用的信息。</p>
<p><em>content</em> 可以是一个字符串或字节串实例;<code class="docutils literal notranslate"><span class="pre">expat</span></code> 读取器模块总是会产生字符串。</p>
<div class="admonition note">
<p class="admonition-title">注解</p>
<p>Python XML 特别关注小组所提供的早期 SAX 1 接口针对此方法使用了一个更类似于 Java 的接口。 由于 Python 所使用的大多数解析器都没有利用老式的接口,因而选择了更简单的签名来替代它。 要将旧代码转换为新接口,请使用 <em>content</em> 而不要通过旧的 <em>offset</em><em>length</em> 形参来对内容进行切片。</p>
</div>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.ignorableWhitespace">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">ignorableWhitespace</code><span class="sig-paren">(</span><em class="sig-param">whitespace</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.ignorableWhitespace" title="永久链接至目标"></a></dt>
<dd><p>接收元素内容中可忽略空白符的通知。</p>
<p>验证解析器必须使用此方法来报告每个可忽略的空白符分块(参见 W3C XML 1.0 建议第 2.10 节):非验证解析器如果能够解析并使用内容模型的话也可以使用此方法。</p>
<p>SAX 解析器可以将所有连续字符数据返回为一个单独分块,或者将其拆成几个分块;但是,在任意单个事件中的所有字符都必须来自同一个外部实体以便定位器提供有用的信息。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.processingInstruction">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">processingInstruction</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.sax.handler.ContentHandler.processingInstruction" title="永久链接至目标"></a></dt>
<dd><p>接受一条处理指令的通知。</p>
<p>解析器将为已找到的每条处理指令发起调用该方法一次:请注意处理指令可能出现在主文档元素之前或之后。</p>
<p>SAX 解析器绝不应当使用此方法来报告 XML 声明XML 1.0 第 2.8 节或文本声明XML 1.0 第 4.3.1 节)。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ContentHandler.skippedEntity">
<code class="sig-prename descclassname">ContentHandler.</code><code class="sig-name descname">skippedEntity</code><span class="sig-paren">(</span><em class="sig-param">name</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ContentHandler.skippedEntity" title="永久链接至目标"></a></dt>
<dd><p>接收一个已跳过实体的通知。</p>
<p>解析器将为每个已跳过实体发起调用此方法一次。 非验证处理程序可能会跳过未看到声明的实体例如由于实体是在一个外部because, for example, the entity was declared in an external DTD 子集中声明的)。 所有处理程序都可以跳过外部实体,具体取决于 <code class="docutils literal notranslate"><span class="pre">feature_external_ges</span></code><code class="docutils literal notranslate"><span class="pre">feature_external_pes</span></code> 属性的值。</p>
</dd></dl>
</section>
<section id="dtdhandler-objects">
<span id="dtd-handler-objects"></span><h2>DTDHandler 对象<a class="headerlink" href="#dtdhandler-objects" title="永久链接至标题"></a></h2>
<p><a class="reference internal" href="#xml.sax.handler.DTDHandler" title="xml.sax.handler.DTDHandler"><code class="xref py py-class docutils literal notranslate"><span class="pre">DTDHandler</span></code></a> 实例提供了下列方法:</p>
<dl class="method">
<dt id="xml.sax.handler.DTDHandler.notationDecl">
<code class="sig-prename descclassname">DTDHandler.</code><code class="sig-name descname">notationDecl</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">publicId</em>, <em class="sig-param">systemId</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.DTDHandler.notationDecl" title="永久链接至目标"></a></dt>
<dd><p>处理标注声明事件。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.DTDHandler.unparsedEntityDecl">
<code class="sig-prename descclassname">DTDHandler.</code><code class="sig-name descname">unparsedEntityDecl</code><span class="sig-paren">(</span><em class="sig-param">name</em>, <em class="sig-param">publicId</em>, <em class="sig-param">systemId</em>, <em class="sig-param">ndata</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.DTDHandler.unparsedEntityDecl" title="永久链接至目标"></a></dt>
<dd><p>处理未解析的实体声明事件。</p>
</dd></dl>
</section>
<section id="entityresolver-objects">
<span id="entity-resolver-objects"></span><h2>EntityResolver 对象<a class="headerlink" href="#entityresolver-objects" title="永久链接至标题"></a></h2>
<dl class="method">
<dt id="xml.sax.handler.EntityResolver.resolveEntity">
<code class="sig-prename descclassname">EntityResolver.</code><code class="sig-name descname">resolveEntity</code><span class="sig-paren">(</span><em class="sig-param">publicId</em>, <em class="sig-param">systemId</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.EntityResolver.resolveEntity" title="永久链接至目标"></a></dt>
<dd><p>求解一个实体的系统标识符并返回一个字符串形式的系统标识符作为读取源,或是一个 InputSource 作为读取源。 默认的实现会返回 <em>systemId</em></p>
</dd></dl>
</section>
<section id="errorhandler-objects">
<span id="sax-error-handler"></span><h2>ErrorHandler 对象<a class="headerlink" href="#errorhandler-objects" title="永久链接至标题"></a></h2>
<p>带有这个接口的对象被用于接收来自 <a class="reference internal" href="xml.sax.reader.html#xml.sax.xmlreader.XMLReader" title="xml.sax.xmlreader.XMLReader"><code class="xref py py-class docutils literal notranslate"><span class="pre">XMLReader</span></code></a> 的错误和警告信息。 如果你创建了一个实现这个接口的对象,然后用你的 <a class="reference internal" href="xml.sax.reader.html#xml.sax.xmlreader.XMLReader" title="xml.sax.xmlreader.XMLReader"><code class="xref py py-class docutils literal notranslate"><span class="pre">XMLReader</span></code></a> 注册这个对象,则解析器将调用你的对象中的这个方法来报告所有的警告和错误。 有三个可用的错误级别:警告、(或许)可恢复的错误和不可恢复的错误。 所有方法都接受 <code class="xref py py-exc docutils literal notranslate"><span class="pre">SAXParseException</span></code> 作为唯一的形参。 错误和警告可以通过引发所传入的异常对象来转换为异常。</p>
<dl class="method">
<dt id="xml.sax.handler.ErrorHandler.error">
<code class="sig-prename descclassname">ErrorHandler.</code><code class="sig-name descname">error</code><span class="sig-paren">(</span><em class="sig-param">exception</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ErrorHandler.error" title="永久链接至目标"></a></dt>
<dd><p>当解析器遇到一个可恢复的错误时调用。 如果此方法没有引发异常,则解析可能会继续,但是应用程序不能预期获得更多的文档信息。 允许解析器继续可能会允许在输入文档中发现额外的错误。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ErrorHandler.fatalError">
<code class="sig-prename descclassname">ErrorHandler.</code><code class="sig-name descname">fatalError</code><span class="sig-paren">(</span><em class="sig-param">exception</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ErrorHandler.fatalError" title="永久链接至目标"></a></dt>
<dd><p>当解析器遇到一个不可恢复的错误时调用;在此方法返回时解析应当终止。</p>
</dd></dl>
<dl class="method">
<dt id="xml.sax.handler.ErrorHandler.warning">
<code class="sig-prename descclassname">ErrorHandler.</code><code class="sig-name descname">warning</code><span class="sig-paren">(</span><em class="sig-param">exception</em><span class="sig-paren">)</span><a class="headerlink" href="#xml.sax.handler.ErrorHandler.warning" title="永久链接至目标"></a></dt>
<dd><p>当解析器向应用程序提供次要警告信息时调用。 在此方法返回时解析应当继续,并且文档信息将继续被传递给应用程序。 在此方法中引发异常将导致解析结束。</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.sax.handler</span></code> --- SAX 处理器的基类</a><ul>
<li><a class="reference internal" href="#contenthandler-objects">ContentHandler 对象</a></li>
<li><a class="reference internal" href="#dtdhandler-objects">DTDHandler 对象</a></li>
<li><a class="reference internal" href="#entityresolver-objects">EntityResolver 对象</a></li>
<li><a class="reference internal" href="#errorhandler-objects">ErrorHandler 对象</a></li>
</ul>
</li>
</ul>
<h4>上一个主题</h4>
<p class="topless"><a href="xml.sax.html"
title="上一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax</span></code> --- 支持 SAX2 解析器</a></p>
<h4>下一个主题</h4>
<p class="topless"><a href="xml.sax.utils.html"
title="下一章"><code class="xref py py-mod docutils literal notranslate"><span class="pre">xml.sax.saxutils</span></code> --- SAX 工具集</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/xml.sax.handler.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="xml.sax.utils.html" title="xml.sax.saxutils --- SAX 工具集"
>下一页</a> |</li>
<li class="right" >
<a href="xml.sax.html" title="xml.sax --- 支持 SAX2 解析器"
>上一页</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>