在线文档教程

xml.sax

xml.sax - 支持SAX2分析器

2.0版本中的新功能。

xml.sax软件包提供了许多实现Python简单API(SAX)接口的模块。程序包本身提供SAX异常和SAX API用户最常使用的便利功能。

Warning

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

便利功能是:

xml.sax.make_parser([parser_list])

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

xml.sax.parse(filename_or_stream, handler[, error_handler])

创建一个SAX解析器并用它来解析文档。 以filename_or_stream形式传入的文档可以是文件名或文件对象。 处理程序参数需要是SAX ContentHandler实例。 如果给出error_handler,它必须是一个SAX ErrorHandler实例; 如果省略,则会在所有错误中引发SAXParseException。 没有回报价值; 所有的工作必须由传入的处理程序来完成。

xml.sax.parseString(string, handler[, error_handler])

与parse()类似,但从作为参数接收的缓冲区字符串中解析。

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

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

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

exception xml.sax.SAXException(msg[, exception])

封装XML错误或警告。该类可以包含来自XML解析器或应用程序的基本错误或警告信息:它可以被分类以提供附加功能或添加本地化。请注意,虽然ErrorHandler界面中定义的处理程序会接收此异常的实例,但实际并不需要引发异常 - 它也可用作信息容器。

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

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

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

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

exception xml.sax.SAXNotRecognizedException(msg[, exception])

当SAX XMLReader遇到无法识别的特征或属性时引发SAXException的子类。 SAX应用程序和扩展可能会将此类用于类似目的。

exception xml.sax.SAXNotSupportedException(msg[, exception])

SAXException的子类在SAX XMLReader被要求启用不支持的功能或将属性设置为实现不支持的值时引发。 SAX应用程序和扩展可能会将此类用于类似目的。

扩展内容

SAX:XML的简单API这个站点是定义SAX API的焦点。 它提供了Java实现和在线文档。 实现和历史信息的链接也可用。 模块xml.sax.handler应用程序提供的对象的接口定义。 模块xml.sax.saxutils用于SAX应用程序的便捷函数。 模块xml.sax.xmlreader解析器提供的对象的接口定义。

1. SAXException对象

SAXException异常类支持下列方法:

SAXException.getMessage()

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

SAXException.getException()

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