xml.sax ---支持SAX2解析器

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


这个 xml.sax 包提供了许多模块,这些模块为Python实现了简单的XML API(SAX)接口。包本身提供了SAX异常和SAX API用户最常用的便利功能。

警告

这个 xml.sax 模块对恶意构造的数据不安全。如果需要分析不可信或未经身份验证的数据,请参阅 XML漏洞 .

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

便利功能包括:

xml.sax.make_parser(parser_list=[])

创建并返回SAX XMLReader 对象。将使用找到的第一个分析器。如果 parser_list 如果提供了,则它必须是命名具有名为的函数的模块的字符串的iterable create_parser() . 中列出的模块 parser_list 将在默认分析器列表中的模块之前使用。

在 3.8 版更改: 这个 parser_list 参数可以是任何iterable,而不仅仅是一个列表。

xml.sax.parse(filename_or_stream, handler, error_handler=handler.ErrorHandler())

创建一个SAX解析器并使用它来解析文档。文件,作为 filename_or_stream ,可以是文件名或文件对象。这个 处理程序 参数必须是SAX ContentHandler 实例。如果 error_handler 一定是萨克斯 ErrorHandler 实例;如果省略, SAXParseException 将在所有错误时引发。没有返回值;所有工作必须由 处理程序 过去了。

xml.sax.parseString(string, handler, error_handler=handler.ErrorHandler())

类似 parse() ,但从缓冲区解析 string 作为参数接收。 string 必须是 str 实例或A bytes-like object .

在 3.5 版更改: 增加了对 str 实例。

典型的SAX应用程序使用三种对象:读卡器、处理程序和输入源。”在本文中,reader是解析器的另一个术语,即从输入源读取字节或字符并生成事件序列的代码。然后事件被分发到处理程序对象,即读卡器调用处理程序上的一个方法。因此,SAX应用程序必须获取一个读卡器对象,创建或打开输入源,创建处理程序,并将这些对象连接在一起。作为准备的最后一步,将调用读卡器来解析输入。在解析期间,基于输入数据的结构和语法事件调用处理程序对象上的方法。

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

除了这些课程, xml.sax 提供以下异常类。

exception xml.sax.SAXException(msg, exception=None)

封装XML错误或警告。此类可以包含来自XML解析器或应用程序的基本错误或警告信息:它可以被子类化以提供附加功能或添加本地化。请注意,尽管 ErrorHandler 接口接收此异常的实例,不需要实际引发异常---它还可以用作信息容器。

实例化后, msg 应该是人类可读的错误描述。可选的 exception 参数(如果给定)应为 None 或者是被解析代码捕获并作为信息传递的异常。

这是其他SAX异常类的基类。

exception xml.sax.SAXParseException(msg, exception, locator)

的子类 SAXException 分析错误时引发。此类的实例将传递给SAX的方法 ErrorHandler 提供有关分析错误的信息的接口。这个类支持SAX Locator 接口以及 SAXException 接口。

exception xml.sax.SAXNotRecognizedException(msg, exception=None)

的子类 SAXException 当萨克斯 XMLReader 遇到无法识别的功能或属性。SAX应用程序和扩展可以将这个类用于类似的目的。

exception xml.sax.SAXNotSupportedException(msg, exception=None)

的子类 SAXException 当萨克斯 XMLReader 要求启用不受支持的功能,或将属性设置为实现不支持的值。SAX应用程序和扩展可以将这个类用于类似的目的。

参见

SAX: The Simple API for XML

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

模块 xml.sax.handler

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

模块 xml.sax.saxutils

在SAX应用程序中使用的方便函数。

模块 xml.sax.xmlreader

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

SaxException对象

这个 SAXException 异常类支持以下方法:

SAXException.getMessage()

返回描述错误情况的可读消息。

SAXException.getException()

返回封装的异常对象,或者 None .