python sax流式解析xml檔案例項
阿新 • • 發佈:2019-02-12
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