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是用事件驱动方式运作,执行顺序同你的文件内容有关,或者说你不应该去依赖啥顺序...