8.12 xml.sax.xmlreader -- XML 解析器接口
8.12 xml.sax.xmlreader -- XML 解析器接口出现于2.0
SAX解析器实现了XMLReader接口。它们在一个Python模块中被实现,
这个模块必须提供一个create_parser()函数。这个函数由xml.sax.make_parser()
调用,并且不需要触底一个参数就可以创建一个解析器对象。
class XMLReader()
可以被SAX解析器继承的基类。
class IncrementalParser()
在某些情况下,并不急于马上解析输入源,而是将这些数据用来填充
文档的数据块,知道这些文档都可用为止。值得一提的是,读入器
一般不会读入整个文件,也不会在数据块里面读入整个文件。
parse()不会给出返回值,直到整个文件都被处理了。因此这个接口
应该用在parse()经常会发生阻塞行为的时候。
当解析器被实例化了之后(is instantiated?)它便立马可以接受来自于
种子方法(feed method)的数据。当调用close方法完成解析之后reset方法
就必须被调用来使解析器做好下一次读的准备,不管是通过解析的方法
还是通过种子方法(feed method)。
值得一提的是,这些方法不能在解析期间被调用,也就是在解析器被调用
直到它返回之前都不能调用这些方法。
默认情况下,此类实现了XMLReader接口,通过IncrementalParser接口的feed,close和reset方法,作为SAX2.0
的driver writers的一个方便之处。
class Locator()
用来联系SAX事件和文档位置的接口。一个定位器对象将会返回有效的结构当且仅当
处于调用了DocumentHandler方法期间。在其他的任何时间,返回的结果都是不可预
测的。如果没有可用信息,方法会返回None
class InputSource()
XMLReader所需要用来进行读数据的信息封装体。
这个类里面可能包含了公共标志符,系统标志符,字节流或者实体字符流的信息。
应用程序将会创建这个类的对象用来在XMLReader.parser()里面使用和从
EntityResolver.resolverEntity里返回时使用.
一个InputSource属于这个应用程序,XMLReader不能对此InputSource对象进行修改
但是它可以通过拷贝并且修改那些拷贝的方法来进行修改。
class AttributesImpl(attrs)
这是Attributes接口(请参看8.12.5)的一个实现。这是一个类似于词典一样的对象
,这个对象表示一个在startElement()调用中的元素的属性。对一些最有用的词典操
作的补充,它支持很多其他的方法,这些方法在接口里面有相应的描述。
这个类的对象应该被阅读器实例化,attrs必须是一个类词典的对象,包含这一个从
属性名字到属性值的映射。
class AttributesNSImpl(attrs,qnames)
是名称空间敏感(Namespace-aware?)的AttrbutesImpl的变体,它将被当作startElementNS()
的参数传入。它继承自AttributesImpl类,但是可以接受属性名为namespaceURI和localname
的二元组。另外,它提供了很多其他的方法,用来描述出现在原始文档里的名字。
这个类实现了AttributesNS接口(具体请参考8.12.6)
[url=http://bugway.cn]BlackBall[/url]翻译,拙劣之处请不吝赐教。E-mail: [email]bugway@gmail.com[/email]
页:
[1]