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")

标签: none

已有 3 条评论

  1. 虫虫学车 虫虫学车

    人生苦短,我用python

  2. 烟台淘宝代运营 烟台淘宝代运营

    代码不懂党,路过帮顶

  3. 加气加油 加气加油

    博主小站很专业 收藏一下

添加新评论