xml.sax.xmlreader
---XML解析器接口¶
SAX解析器实现 XMLReader
接口。它们在python模块中实现,该模块必须提供一个函数 create_parser()
. 此函数由调用 xml.sax.make_parser()
没有参数来创建新的解析器对象。
- class xml.sax.xmlreader.XMLReader¶
可以由SAX解析器继承的基类。
- class xml.sax.xmlreader.IncrementalParser¶
在某些情况下,不希望同时解析输入源,而是在文档块可用时提供它们。请注意,读卡器通常不会读取整个文件,但也会分块读取;仍然
parse()
在处理完整个文档后才会返回。因此,如果parse()
不可取。当解析器被实例化时,它就可以立即开始接受feed方法中的数据。解析完成后,必须调用Reset方法以使分析器准备好接受来自提要或使用Parse方法的新数据。
注意这些方法必须 not 在解析过程中被调用,也就是说,在解析被调用之后,在它返回之前。
默认情况下,该类还使用incrementalParser接口的feed、close和reset方法实现xmlReader接口的解析方法,以方便SAX2.0驱动程序编写器。
- class xml.sax.xmlreader.Locator¶
用于将SAX事件与文档位置关联的接口。定位器对象仅在调用DocumentHandler方法时返回有效结果;在任何其他时间,结果都是不可预测的。如果信息不可用,方法可能返回
None
.
- class xml.sax.xmlreader.InputSource(system_id=None)¶
封装
XMLReader
读取实体。此类可以包含有关公共标识符、系统标识符、字节流(可能包含字符编码信息)和/或实体的字符流的信息。
应用程序将创建此类的对象以在
XMLReader.parse()
方法和,用于从EntityResolver.ResolveEntity返回。安
InputSource
属于应用程序,XMLReader
不允许修改InputSource
对象从应用程序传递给它,尽管它可以复制和修改这些对象。
- class xml.sax.xmlreader.AttributesImpl(attrs)¶
这是
Attributes
接口(见章节 这个 Attributes 界面 )这是一个类似字典的对象,它表示startElement()
调用。除了最有用的字典操作之外,它还支持接口所描述的许多其他方法。这个类的对象应该由读者实例化; 阿特斯 必须是类似字典的对象,包含从属性名到属性值的映射。
- class xml.sax.xmlreader.AttributesNSImpl(attrs, qnames)¶
命名空间感知变量
AttributesImpl
,将传递给startElementNS()
. 它来源于AttributesImpl
,但将属性名理解为 命名空间 和 地名 . 此外,它还提供了许多方法,这些方法希望在原始文档中出现限定名。此类实现AttributesNS
接口(见章节 这个 AttributesNS 界面 )
XmlReader对象¶
这个 XMLReader
接口支持以下方法:
- XMLReader.parse(source)¶
处理输入源,生成SAX事件。这个 来源 对象可以是系统标识符(标识输入源的字符串——通常是文件名或URL),也可以是
pathlib.Path
或 path-like 对象,或InputSource
对象。什么时候?parse()
返回,输入被完全处理,解析器对象可以被丢弃或重置。在 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
如果设置了,解析外部实体的尝试将导致打开该实体的系统标识符,如果该标识符不可用,则失败。
- XMLReader.getErrorHandler()¶
返回电流
ErrorHandler
.
- XMLReader.setErrorHandler(handler)¶
设置当前错误处理程序。如果没有
ErrorHandler
设置后,错误将作为异常引发,并打印警告。
- XMLReader.setLocale(locale)¶
允许应用程序设置错误和警告的区域设置。
SAX解析器不需要为错误和警告提供本地化;但是,如果它们不能支持请求的区域设置,则必须引发SAX异常。应用程序可能在分析过程中请求更改区域设置。
- XMLReader.getFeature(featurename)¶
返回功能的当前设置 特征名 . 如果无法识别该功能,
SAXNotRecognizedException
提高了。模块中列出了著名的功能名称xml.sax.handler
.
- XMLReader.setFeature(featurename, value)¶
设置 特征名 到 value . 如果无法识别该功能,
SAXNotRecognizedException
提高了。如果分析程序不支持该功能或其设置, SAXNotSupportedException 提高了。
- XMLReader.getProperty(propertyname)¶
返回属性的当前设置 属性名 . 如果不识别该属性,则
SAXNotRecognizedException
提高了。模块中列出了已知的属性名xml.sax.handler
.
- XMLReader.setProperty(propertyname, value)¶
设置 属性名 到 value . 如果不承认该属性,
SAXNotRecognizedException
提高了。如果分析器不支持该属性或其设置, SAXNotSupportedException 提高了。
IncrementalParser对象¶
实例 IncrementalParser
提供以下附加方法:
- IncrementalParser.feed(data)¶
处理 data .
- IncrementalParser.close()¶
假设文档结束。这将检查格式良好的条件,这些条件只能在末尾进行检查,调用处理程序,并可能清理解析期间分配的资源。
- IncrementalParser.reset()¶
调用Close后调用此方法以重置分析器,以便准备分析新文档。关闭后调用parse或feed而不调用reset的结果未定义。
定位对象¶
实例 Locator
提供以下方法:
- Locator.getColumnNumber()¶
返回当前事件开始的列号。
- Locator.getLineNumber()¶
返回当前事件开始的行号。
- Locator.getPublicId()¶
返回当前事件的公共标识符。
- Locator.getSystemId()¶
返回当前事件的系统标识符。
输入源对象¶
- 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.setByteStream(bytefile)¶
设置字节流(A binary file )对于此输入源。
如果还指定了字符流,SAX解析器将忽略这一点,但它将优先使用字节流来打开URI连接本身。
如果应用程序知道字节流的字符编码,则应使用setEncoding方法对其进行设置。
- InputSource.getByteStream()¶
获取此输入源的字节流。
getEncoding方法将返回此字节流的字符编码,或者
None
如果未知。
- InputSource.setCharacterStream(charfile)¶
设置字符流(A text file )对于此输入源。
如果指定了字符流,SAX解析器将忽略任何字节流,并且不会尝试打开到系统标识符的URI连接。
- InputSource.getCharacterStream()¶
获取此输入源的字符流。
这个 Attributes
界面¶
Attributes
对象实现 mapping protocol 包括方法 copy()
, get()
, __contains__()
, items()
, keys()
和 values()
. 还提供了以下方法:
- Attributes.getLength()¶
返回属性数。
- Attributes.getNames()¶
返回属性的名称。
- Attributes.getType(name)¶
返回属性的类型 name ,通常
'CDATA'
.
- Attributes.getValue(name)¶
返回属性值 name .
这个 AttributesNS
界面¶
此接口是 Attributes
接口(见章节 这个 Attributes 界面 )该接口支持的所有方法也可用于 AttributesNS
物体。
还提供以下方法:
- AttributesNS.getValueByQName(name)¶
返回限定名的值。
- AttributesNS.getNameByQName(name)¶
返回
(namespace, localname)
配对为合格 name .
- AttributesNS.getQNameByName(name)¶
返回的限定名
(namespace, localname)
一对。
- AttributesNS.getQNames()¶
返回所有属性的限定名。