You are here:  Home » Python » – 支持SAX2解析器 – 结构化标记处理工具(Python教程)(参考资料)

xml.sax– 支持SAX2解析器

源代码: Lib / xml / sax / __ init__.py


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

Warning

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

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

再次启用该功能。便利功能是:

xml.sax.make_parserparser_list=[]

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

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

创建一个SAX解析器并使用它来解析文档。以filename_or_stream传入的文档可以是文件名或文件对象。handler参数需要是SAX ContentHandler实例。如果error_handler给出,它必须是SAX ErrorHandler实例;ifomitted,SAXParseException将在所有错误上提出。有noreturn值;所有工作必须由handler传入了

xml.sax.parseStringstring, handler, error_handler=handler.ErrorHandler()

相近 parse(),但从缓冲区解析string作为参数收到。string必须是str实例或字节对象.

在版本3.5中更改:增加对strinstances.

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

对于这些对象,只有接口是相关的;它们通常不是由应用程序本身实现的。由于Python没有明确的接口注释,因此它们被正式引入为类,但应用程序可能使用不从提供的类继承的实现。该InputSource, Locator,Attributes, AttributesNS,和XMLReader接口在模块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.SAXParseExceptionmsg, exception, locator

的子类SAXException提出解析错误。将此类的实例传递给SAX ErrorHandler接口的方法,以提供有关解析错误的信息。本课程支持SAX Locator界面以及SAXException界面

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

在SAX时SAXException提出的子类XMLReader遇到无法识别的功能或属性。SAX应用程序扩展可能会将此类用于类似目的.

exception xml.sax.SAXNotSupportedExceptionmsg, exception=None

的子类SAXExceptionSAX时提出XMLReader要求启用不受支持的功能,或将属性设置为实现不支持的值。SAX应用程序和扩展可以使用此类用于类似目的.

参见

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

SAXException对象

SAXException异常类支持以下方法:

SAXException.getMessage

返回描述错误情况的人类可读信息.

SAXException.getException ()

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

评论被关闭。