Python使用SAX处理xml文件
Python中处理xml有很多方法,各有特点。SAX解析器不像DOM那样建立一个完整的文档树,而是采取逐行读取逐行解析的方式,因而具有速度快的优点,适合大尺寸文件。
其中ContentHandler处理器用于访问文档内容。
```
import xml.sax
定义自己的处理器类,继承ContentHandler
class TestHandler(xml.sax.handler.ContentHandler):
def init(self):
self._charBuffer = []
self._result = []
def _getCharacterData(self):
data = ''.join(self._charBuffer).strip()
self._charBuffer = []
return data.strip() #remove strip() if whitespace is important
def characters(self, data):
self._charBuffer.append(data)
def startElement(self, name, attrs):
if name == 'job': self._result.append({})
def endElement(self, name):
if not name == 'job': self._result[-1][name] = self._getCharacterData()
if name == 'main':
xml.sax.parse("test.xml", TestHandler)
xml.sax.parseString("", TestHandler)
# 以上两个函数虽然执行了xml解析,但是没有返回值。
# 如果需要对解析结果进行处理,可以给TestHandler增加相应方法。
"""
class TestHandler(xml.sax.handler.ContentHandler):
....
def parse(self, f):
xml.sax.parse(f, self)
return self.body
....
result = TestHandler.parse("test.xml")
人生苦短,我用python
代码不懂党,路过帮顶
博主小站很专业 收藏一下