– XML解析器接口 – 结构化标记处理工具(Python教程)(参考资料)
xml.sax.xmlreader
– XML解析器接口
源代码: Lib / xml / sax / xmlreader.py
SAX解析器实现XMLReader
接口。它们是在Python模块中实现的,它必须提供一个函数create_parser()
。这个函数由xml.sax.make_parser()
调用,没有创建新解析器对象的参数.
- class
xml.sax.xmlreader.
XMLReader
-
可以由SAX解析器继承的基类.
- class
xml.sax.xmlreader.
IncrementalParser
-
在某些情况下,最好不要一次解析输入源,但在文档可用时对其进行补偿。请注意,阅读器通常不会读取整个文件,但也会以块的形式读取;在整个文档处理之前,
parse()
将不会返回。因此,如果不需要parse()
的阻塞行为,则应该使用这些接口.当解析器被实例化时,它已准备好立即开始接受来自forfeed方法的数据。解析完成后,调用closethe reset方法必须调用,使解析器准备接受来自feed或使用parse方法的新数据.
注意这些方法必须not在解析过程中调用,也就是调用afterparse并在它返回之前调用
默认情况下,该类还使用IncrementalParser接口的feed,close和reset方法实现XMLReader接口的parse方法,以方便SAX 2.0驱动程序编写者.
- class
xml.sax.xmlreader.
Locator
-
用于将SAX事件与文档位置相关联的接口。定位器对象只会在调用DocumentHandler方法时返回有效结果;在任何时候,结果都是不可预测的。如果没有相关信息,方法可能会返回
None
.
- class
xml.sax.xmlreader.
InputSource
(system_id=None) -
将
XMLReader
所需信息封装到readentities.该类可以包括有关公共标识符,systemidentifier,字节流(可能带有字符编码信息)和/或实体的字符流的信息.
应用程序将创建此类的对象,以便在
XMLReader.parse()
方法中使用,并返回fromEntityResolver.resolveEntity。对
InputSource
属于应用程序,XMLReader
不允许修改InputSource
从应用程序传递给它的对象,虽然它可以复制和修改它们.
- class
xml.sax.xmlreader.
AttributesImpl
(attrs) -
这是
Attributes
接口的实现(参见属性接口)。这是一个类似字典的对象,它表示startElement()
调用中的元素属性。除了最有用的字典操作之外,它还支持接口描述的许多其他方法。这类对象应该由读者来实现;attrs必须是一个类似字典的对象,包含从属性名到属性值的映射.
- class
xml.sax.xmlreader.
AttributesNSImpl
(attrs, qnames) -
Namespace-aware变种
AttributesImpl
,将传递给startElementNS()
。它来自AttributesImpl
,但是将属性名称理解为namespaceURI和localname的两元组。此外,它提供了许多期望在原始文档中出现的限定名称的方法。这个类实现了AttributesNS
接口(参见AttributesNS接口).
XMLReader对象
XMLReader
接口支持以下方法:
XMLReader.
parse
(source)-
处理输入源,生成SAX事件。source对象可以是系统标识符(标识输入源的字符串 – 通常是文件名或URL),类文件对象或
InputSource
对象。当parse()
返回时,输入被完全处理,解析器对象可以被丢弃或重置.在版本3.5中更改:添加了对字符流的支持.
XMLReader.
getContentHandler
()-
返回当前的
ContentHandler
.
XMLReader.
setContentHandler
(handler)-
设置当前的
ContentHandler
。如果没有设置ContentHandler
,内容事件将被搁置.
XMLReader.
getDTDHandler
()-
返回当前
DTDHandler
.
XMLReader.
setDTDHandler
(handler)-
设置当前的
DTDHandler
。如果没有设置DTDHandler
,DTDevents将被丢弃.
XMLReader.
getEntityResolver
()-
返回当前
EntityResolver
.
XMLReader.
setEntityResolver
(handler)-
设置当前的
EntityResolver
。如果不EntityResolver
设置,尝试解析外部实体将导致打开实体的systemidentifier,如果不可用则失败.
XMLReader.
getErrorHandler
()-
返回当前
ErrorHandler
.
XMLReader.
setErrorHandler
(handler)-
设置当前错误处理程序。如果没有设置
ErrorHandler
,则会出现异常错误,并打印警告.
XMLReader.
setLocale
(locale )-
允许应用程序设置错误和警告的区域设置
SAX解析器不需要提供错误和警告的本地化;但是,如果它们不支持所请求的语言环境,则必须引发SAXexception。应用程序可能会在解析中请求区域设置更改
XMLReader.
getFeature
(featurename)-
返回功能featurename的当前设置。如果无法识别该功能,则会引发
SAXNotRecognizedException
。模块中列出了众所周知的功能名称xml.sax.handler
.
XMLReader.
setFeature
(featurename, value)-
设置featurename至 value。如果无法识别该功能,则会引发
SAXNotRecognizedException
。如果解析器不支持该功能或其设置,则SAXNotSupportedException被抬起.
XMLReader.
getProperty
(propertyname )-
返回属性propertyname的当前设置。如果属性未被识别,则引发
SAXNotRecognizedException
。模块中列出了众所周知的属性名称xml.sax.handler
.
XMLReader.
setProperty
(propertyname, value)-
将propertyname设置为value。如果无法识别该属性,则会引发
SAXNotRecognizedException
。如果解析器不支持该属性或其设置,则SAXNotSupportedException被提升.
IncrementalParser Objects
IncrementalParser
提供以下附加方法:
IncrementalParser.
feed
(data)-
处理一大堆data.
IncrementalParser.
close
()-
假设文档结束。这将检查只能在最后检查的良好状态条件,调用处理程序,并可能清理解析期间分配的资源.
IncrementalParser.
reset
( )-
调用close后调用此方法以重置解析器,以便它可以解析新文档。在没有调用reset的情况下调用parse或feed afterclose的结果是未定义的.
定位器对象
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
(encoding)的系统标识符-
设置此
InputSource
.编码必须是XML编码声明可接受的字符串(参见XML建议的第4.3.3节).
如果
InputSource
,InputSource
还包含一个字符流.
InputSource.
getEncoding
()-
获取此InputSource的字符编码.
InputSource.
setByteStream
(bytefile )-
为此输入源设置字节流(二进制文件).
如果还指定了字符流,SAX解析器将忽略它,但它将优先使用字节流来打开URI连接本身.
如果应用程序知道字节流的字符编码,则应使用setEncoding方法设置它.
InputSource.
getByteStream
()-
获取此输入源的字节流.
getEncoding方法将返回此字节流的字符编码,或
None
如果不知道的话
InputSource.
setCharacterStream
(charfile)-
设置字符流(文本文件)对于这个输入源.
如果指定了字符流,SAX解析器将忽略任何字节流,并且不会尝试打开与系统标识符的URI连接.
InputSource.
getCharacterStream
( )-
获取此输入源的字符流.
Attributes
接口
Attributes
对象实现映射协议的一部分,包括方法copy()
,get()
, __contains__()
,items()
, keys()
和values()
。还提供了以下方法:
Attributes.
getLength
()-
返回属性数量.
Attributes.
getNames
()-
返回属性的名称.
Attributes.
getType
(name )-
返回属性的类型name,通常是
"CDATA"
.
Attributes.
getValue
(name)-
返回属性的值name.
AttributesNS
接口
这个接口是Attributes
界面(参见属性界面)。该接口支持的所有方法也可以在AttributesNS
objects.
上使用。还可以使用以下方法:
AttributesNS.
getValueByQName
(name)-
返回合格名称的值.
AttributesNS.
getNameByQName
(name)-
返回
(namespace, localname)
对合格name.
AttributesNS.
getQNameByName
(name)-
返回
(namespace, localname)
对的限定名称
AttributesNS.
getQNames
// ()-
返回所有属性的限定名称.
评论被关闭。