xml.sax —支持 SAX2 解析器

源代码: Lib/xml/sax/init.py


xml.sax软件包提供了许多模块,这些模块为 Python 实现了 XML 的简单 API(SAX)接口。程序包本身提供了 SAX 异常和便利Function,这些Function将由 SAX API 的用户最多使用。

Warning

xml.sax模块不能安全防范恶意构建的数据。如果您需要解析不可信或未经身份验证的数据,请参见XML vulnerabilities

在版本 3.7.1 中进行了更改:默认情况下,SAX 解析器不再处理常规外部实体以提高安全性。以前,解析器创建网络连接以从 DTD 和实体的文件系统中获取远程文件或加载本地文件。可以使用解析器对象上的方法setFeature()和参数feature_external_ges再次启用该Function。

便利Function为:

在 3.8 版中进行了更改:* parser_list *参数可以是任何可迭代的,而不仅仅是列表。

在版本 3.5 中进行了更改:添加了对str个实例的支持。

典型的 SAX 应用程序使用三种对象:读取器,处理程序和 Importing 源。在这种情况下,“阅读器”是解析器的另一个术语,即一段代码,它从 Importing 源中读取字节或字符,并产生一系列事件。然后将事件分发到处理程序对象,即,读取器在处理程序上调用方法。因此,SAX 应用程序必须获取阅读器对象,创建或打开 Importing 源,创建处理程序并将这些对象全部连接在一起。作为准备工作的最后一步,要求阅读器解析 Importing。在解析期间,将根据来自 Importing 数据的结构和语法事件来调用处理程序对象上的方法。

对于这些对象,仅接口是相关的。它们通常不由应用程序本身实例化。由于 Python 没有明确的接口概念,因此将它们作为类正式引入,但是应用程序可以使用不从提供的类继承的实现。 InputSourceLocatorAttributesAttributesNSXMLReader接口在模块xml.sax.xmlreader中定义。处理程序接口在xml.sax.handler中定义。为了方便起见,InputSource(通常直接实例化)和处理程序类也可以从xml.sax获得。这些接口说明如下。

除了这些类之外,xml.sax还提供以下异常类。

实例化时,* msg 应该是该错误的易于理解的描述。可选的 exception *参数(如果提供)应为None或解析代码捕获并作为信息传递的异常。

这是其他 SAX 异常类的 Base Class。

See also

  • SAX:XML 的简单 API

  • 该站点是 SAX API 定义的焦点。它提供了 Java 实现和在线文档。也提供实现和历史信息的链接。

  • Module xml.sax.handler

  • 应用程序提供的对象的接口的定义。

  • Module xml.sax.saxutils

  • 在 SAX 应用程序中使用的便利Function。

  • Module xml.sax.xmlreader

  • 解析器提供的对象的接口定义。

SAXException Objects

SAXException异常类支持以下方法:

首页