首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > perl python >

parse()执行顺序的小疑点

2012-05-06 
parse()执行顺序的小问题Python codefrom xml.sax.handler import ContentHandlerfrom xml.sax import par

parse()执行顺序的小问题

Python code
from xml.sax.handler import ContentHandlerfrom xml.sax import parseclass HeadlineHandler(ContentHandler):        in_headline=False    def __init__(self,headlines):        ContentHandler.__init__(self)        self.headlines=headlines        self.data=[]            def startElement(self,name,attrs):        if name== 'h1':            self.in_headline=True     def characters(self,string):        if self.in_headline:            self.data.append(string)                           def endElement(self,name):        if name== 'h1':            text= ''.join(self.data)            self.data=[]            self.headlines.append(text)            self.in_headline=False                        headlines=[]parse('website.xml',HeadlineHandler(headlines))print 'The following <h1> elements were found:'for h in headlines:    print h

代码的作用是解析这个website.xml文件,列出标签为h1的所有内容
但是我不明白上面三个方法的执行过程,当找到h1时,self.in_healine为true,为什么它会先执行characters方法,然后再执行endElement呢,求解

我这是新手
xml应该不用贴出来了吧

[解决办法]
sax是用事件驱动方式运作,执行顺序同你的文件内容有关,或者说你不应该去依赖啥顺序...

热点排行