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
。