On this page
xml.sax.xmlreader — XML 解析器的接口
SAX 解析器实现XMLReader接口。它们在 Python 模块中实现,该模块必须提供create_parser()
函数。 xml.sax.make_parser()不带任何参数调用此函数以创建新的解析器对象。
类别
xml.sax.xmlreader.
XMLReader
- 可以由 SAX 解析器继承的 Base Class。
类别
xml.sax.xmlreader.
IncrementalParser
- 在某些情况下,希望不要立即解析 Importing 源,而是在文档块可用时提供它们。请注意,阅读器通常不会读取整个文件,但也会分块读取它。在处理完整个文档之前,
parse()
1 不会返回。因此,如果不希望parse()
的阻塞行为,则应使用这些接口。
- 在某些情况下,希望不要立即解析 Importing 源,而是在文档块可用时提供它们。请注意,阅读器通常不会读取整个文件,但也会分块读取它。在处理完整个文档之前,
解析器实例化后,就可以立即开始从 feed 方法接受数据了。解析完成后,pass调用 close 来结束,必须调用 reset 方法以使解析器准备好接受来自 feed 或使用 parse 方法的新数据。
请注意,在解析过程中(即在调用解析之后且返回之前),这些方法一定不能*被调用。
默认情况下,该类还使用 IncrementalParser 接口的 feed,close 和 reset 方法来实现 XMLReader 接口的 parse 方法,以方便 SAX 2.0 驱动程序编写器。
类别
xml.sax.xmlreader.
Locator
- 用于将 SAX 事件与文档位置相关联的界面。定位器对象仅在调用 DocumentHandler 方法期间才返回有效结果。在任何其他时间,结果都是不可预测的。如果没有可用信息,则方法可能返回
None
。
- 用于将 SAX 事件与文档位置相关联的界面。定位器对象仅在调用 DocumentHandler 方法期间才返回有效结果。在任何其他时间,结果都是不可预测的。如果没有可用信息,则方法可能返回
-
- class *
xml.sax.xmlreader.
InputSource
(* system_id = None *)
- 封装XMLReader读取实体所需的信息。
- class *
此类可以包括有关公共标识符,系统标识符,字节流(可能带有字符编码信息)和/或实体的字符流的信息。
应用程序将创建此类的对象以用于XMLReader.parse()方法并从 EntityResolver.resolveEntity 返回。
InputSource属于应用程序,但是XMLReader不允许修改从应用程序传递给它的InputSource对象,尽管它可以进行复制和修改。
类别
xml.sax.xmlreader.
AttributesImpl
(属性)- 这是
Attributes
接口的实现(请参见属性界面部分)。这是一个类似于字典的对象,代表startElement()
调用中的元素属性。除了最有用的字典操作外,它还支持接口所描述的许多其他方法。此类的对象应由 Reader 实例化。 * attrs *必须是类似于字典的对象,其中包含从属性名称到属性值的 Map。
- 这是
-
- class *
xml.sax.xmlreader.
AttributesNSImpl
(* attrs , qnames *)
- AttributesImpl的名称空间感知变体,将传递给
startElementNS()
。它是从AttributesImpl派生的,但是将属性名称理解为* namespaceURI 和 localname *的二 Tuples。此外,它提供了许多方法,这些方法期望在原始文档中出现合格名称。此类实现AttributesNS
接口(请参见AttributesNS 接口部分)。
- class *
XMLReader Objects
XMLReader界面支持以下方法:
XMLReader.
parse
(* source *)- 处理 Importing 源,产生 SAX 事件。 * source *对象可以是系统标识符(标识 Importing 源的字符串-通常是文件名或 URL),pathlib.Path或path-like对象或InputSource对象。返回parse()时,将完全处理 Importing,并且可以丢弃或重置解析器对象。
在版本 3.5 中进行了更改:添加了对字符流的支持。
在 3.8 版中进行了更改:添加了对类似路径的对象的支持。
XMLReader.
getContentHandler
( )- 返回当前的ContentHandler。
XMLReader.
setContentHandler
(* handler *)- 设置当前的ContentHandler。如果未设置ContentHandler,则内容事件将被丢弃。
XMLReader.
getDTDHandler
( )- 返回当前的DTDHandler。
XMLReader.
setDTDHandler
(* handler *)- 设置当前的DTDHandler。如果未设置DTDHandler,则 DTD 事件将被丢弃。
XMLReader.
getEntityResolver
( )- 返回当前的EntityResolver。
XMLReader.
setEntityResolver
(* handler *)- 设置当前的EntityResolver。如果未设置EntityResolver,则try解析外部实体将导致打开该实体的系统标识符,如果该标识符不可用,则失败。
XMLReader.
getErrorHandler
( )- 返回当前的ErrorHandler。
XMLReader.
setErrorHandler
(* handler *)- 设置当前的错误处理程序。如果未设置ErrorHandler,则将引发错误(异常)并打印警告。
XMLReader.
setLocale
(* locale *)- 允许应用程序设置错误和警告的语言环境。
SAX 解析器不需要为错误和警告提供本地化;如果它们不能支持请求的语言环境,则必须引发 SAX 异常。应用程序可能会在解析过程中请求更改语言环境。
XMLReader.
getFeature
(* featurename *)- 返回Function* featurename *的当前设置。如果无法识别该Function,则会引发
SAXNotRecognizedException
。模块xml.sax.handler中列出了众所周知的Function名称。
- 返回Function* featurename *的当前设置。如果无法识别该Function,则会引发
XMLReader.
setFeature
(* featurename , value *)- 将* featurename 设置为 value 。如果无法识别该Function,则会引发
SAXNotRecognizedException
。如果解析器不支持该Function或其设置,则会引发 SAXNotSupportedException *。
- 将* featurename 设置为 value 。如果无法识别该Function,则会引发
XMLReader.
getProperty
(* propertyname *)- 返回属性* propertyname *的当前设置。如果无法识别该属性,则会引发
SAXNotRecognizedException
。知名属性名称在模块xml.sax.handler中列出。
- 返回属性* propertyname *的当前设置。如果无法识别该属性,则会引发
XMLReader.
setProperty
(属性名称,值)- 将* propertyname 设置为 value 。如果无法识别该属性,则引发
SAXNotRecognizedException
。如果解析器不支持该属性或其设置,则引发 SAXNotSupportedException *。
- 将* propertyname 设置为 value 。如果无法识别该属性,则引发
IncrementalParser Objects
IncrementalParser的实例提供以下其他方法:
IncrementalParser.
feed
(* data *)- 处理* data *数据块。
IncrementalParser.
close
( )- 假设文档结尾。这将检查格式正确的条件,这些条件只能在最后检查,调用处理程序,并可以清理在解析过程中分配的资源。
IncrementalParser.
reset
( )- 在调用 close 重置解析器后,将调用此方法,以便可以解析新文档。关闭后调用而不解析重置的解析或提要的结果是不确定的。
Locator Objects
Locator的实例提供以下方法:
Locator.
getColumnNumber
( )- 返回当前事件开始的列号。
Locator.
getLineNumber
( )- 返回当前事件开始的行号。
Locator.
getPublicId
( )- 返回当前事件的公共标识符。
Locator.
getSystemId
( )- 返回当前事件的系统标识符。
InputSource Objects
InputSource.
setPublicId
(* id *)- 设置此InputSource的公共标识符。
InputSource.
getPublicId
( )- 返回此InputSource的公共标识符。
InputSource.
setSystemId
(* id *)- 设置此InputSource的系统标识符。
InputSource.
getSystemId
( )- 返回此InputSource的系统标识符。
InputSource.
setEncoding
(编码)- 设置此InputSource的字符编码。
编码必须是 XML 编码语句可接受的字符串(请参阅 XML 建议的 4.3.3 节)。
如果InputSource还包含字符流,则将忽略InputSource的编码属性。
InputSource.
getEncoding
( )- 获取此 InputSource 的字符编码。
InputSource.
setByteStream
(* bytefile *)- 设置此 Importing 源的字节流(a binary file)。
如果还指定了一个字符流,则 SAX 解析器将忽略此设置,但是它会优先使用字节流而不是打开 URI 连接本身。
如果应用程序知道字节流的字符编码,则应使用 setEncoding 方法进行设置。
InputSource.
getByteStream
( )- 获取此 Importing 源的字节流。
getEncoding 方法将返回此字节流的字符编码,如果未知,则返回None
。
InputSource.
setCharacterStream
(* charfile *)- 设置此 Importing 源的字符流(text file)。
如果指定了字符流,则 SAX 解析器将忽略任何字节流,并且不会try打开与系统标识符的 URI 连接。
InputSource.
getCharacterStream
( )- 获取此 Importing 源的字符流。
属性界面
Attributes
对象实现mapping protocol的一部分,包括方法copy()
,get()
,contains(),items()
,keys()
和values()
。还提供以下方法:
Attributes.
getLength
( )- 返回属性数。
Attributes.
getNames
( )- 返回属性的名称。
Attributes.
getType
(* name *)- 返回属性* name *的类型,通常为
'CDATA'
。
- 返回属性* name *的类型,通常为
Attributes.
getValue
(* name *)- 返回属性* name *的值。
AttributesNS 接口
此接口是Attributes
接口的子类型(请参阅属性界面)。该接口支持的所有方法在AttributesNS
对象上也可用。
也可以使用以下方法:
AttributesNS.
getValueByQName
(* name *)- 返回限定名称的值。
AttributesNS.
getNameByQName
(* name *)- 返回
(namespace, localname)
对以获取合格的* name *。
- 返回
AttributesNS.
getQNameByName
(* name *)- 返回
(namespace, localname)
对的合格名称。
- 返回
AttributesNS.
getQNames
( )- 返回所有属性的限定名称。