xml.sax.xmlreader — XML 解析器的接口

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


SAX 解析器实现XMLReader接口。它们在 Python 模块中实现,该模块必须提供create_parser()函数。 xml.sax.make_parser()不带任何参数调用此函数以创建新的解析器对象。

解析器实例化后,就可以立即开始从 feed 方法接受数据了。解析完成后,pass调用 close 来结束,必须调用 reset 方法以使解析器准备好接受来自 feed 或使用 parse 方法的新数据。

请注意,在解析过程中(即在调用解析之后且返回之前),这些方法一定不能*被调用。

默认情况下,该类还使用 IncrementalParser 接口的 feed,close 和 reset 方法来实现 XMLReader 接口的 parse 方法,以方便 SAX 2.0 驱动程序编写器。

此类可以包括有关公共标识符,系统标识符,字节流(可能带有字符编码信息)和/或实体的字符流的信息。

应用程序将创建此类的对象以用于XMLReader.parse()方法并从 EntityResolver.resolveEntity 返回。

InputSource属于应用程序,但是XMLReader不允许修改从应用程序传递给它的InputSource对象,尽管它可以进行复制和修改。

XMLReader Objects

XMLReader界面支持以下方法:

在版本 3.5 中进行了更改:添加了对字符流的支持。

在 3.8 版中进行了更改:添加了对类似路径的对象的支持。

SAX 解析器不需要为错误和警告提供本地化;如果它们不能支持请求的语言环境,则必须引发 SAX 异常。应用程序可能会在解析过程中请求更改语言环境。

IncrementalParser Objects

IncrementalParser的实例提供以下其他方法:

Locator Objects

Locator的实例提供以下方法:

InputSource Objects

编码必须是 XML 编码语句可接受的字符串(请参阅 XML 建议的 4.3.3 节)。

如果InputSource还包含字符流,则将忽略InputSource的编码属性。

如果还指定了一个字符流,则 SAX 解析器将忽略此设置,但是它会优先使用字节流而不是打开 URI 连接本身。

如果应用程序知道字节流的字符编码,则应使用 setEncoding 方法进行设置。

getEncoding 方法将返回此字节流的字符编码,如果未知,则返回None

如果指定了字符流,则 SAX 解析器将忽略任何字节流,并且不会try打开与系统标识符的 URI 连接。

属性界面

Attributes对象实现mapping protocol的一部分,包括方法copy()get()contains()items()keys()values()。还提供以下方法:

AttributesNS 接口

此接口是Attributes接口的子类型(请参阅属性界面)。该接口支持的所有方法在AttributesNS对象上也可用。

也可以使用以下方法:

首页