1. 程式人生 > >python sax流式解析xml檔案例項

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