python sax流式解析xml文件实例

python sax流式解析xml文件

注:摘出解析xml两个关键函数

import xml.sax
import xml.sax.handler

class saxHandler(xml.sax.ContentHandler):
    def __init__(self):
        self.tag=None
        self.attribute=[]

    def startElement(self, tag, attributes):
        self.tag = tag

    def characters(self, content):
        if self.tag == 'name':
            if content != '\n' and content !=  '    ' and content != '  ':
                self.attribute.append(content)

    def endElement(self, name):
        pass

def getData(filepath):
    #创建解析xml文件类的对象
    parser = xml.sax.make_parser()
    parser.setFeature(xml.sax.handler.feature_namespaces,0)
    Handler=saxHandler()
    parser.setContentHandler( Handler )
    filename=os.listdir()
    for file in filename:
        if file.find('.xml') != -1:
            #解析xml文件
            #每次调用时会依次自动调用
            #startElement( tag, attributes)(开始解析时自动调用) 
            #characters ( content)(从行开始,遇到标签之前,存在字符,content的值为这些字符串。从一个标签,遇到下一个标签之前, 存在字符,content的值为这些字符串。从一个标签,遇到行结束符之前,存在字符,content的值为这些字符串。标签可以是开始标签,也可以是结束标签)
            #endElement(self, name)(结束解析时自动调用)
            parser.parse(filepath+file)
            bill.data['unitPrice']+=1
            #print(f)
    b=billing()
    Handler.satistics(b)
    return b
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值