Python——XML解析

来源:互联网 发布:怎么通过网络赚钱 编辑:程序博客网 时间:2024/05/22 10:39

SAX是事件驱动的解析方式
会产生3个事件:

<a href="/">python</a>

1.start_element事件,在读取<a href="/">时;

2.char_data事件,在读取python时;

3.end_element事件,在读取</a>时。

需要注意的是读取一大段字符串时,CharacterDataHandler可能被多次调用,所以需要自己保存起来,在EndElementHandler里面再合并。

from xml.parsers.expat import ParserCreateclass DefaultSaxHandler(object):    def start_element(self, name, attrs):        print('sax:start_element: %s, attrs: %s' % (name, str(attrs)))    def end_element(self, name):        print('sax:end_element: %s' % name)    def char_data(self, text):        print('sax:char_data: %s' % text)xml = r'''<?xml version="1.0"?><ol>    <li><a href="/python">Python</a></li>    <li><a href="/ruby">Ruby</a></li></ol>'''handler = DefaultSaxHandler()parser = ParserCreate()parser.StartElementHandler = handler.start_elementparser.EndElementHandler = handler.end_elementparser.CharacterDataHandler = handler.char_dataparser.Parse(xml)
原创粉丝点击