python sax流式解析xml檔案例項

2021-08-21 18:34:33 字數 1289 閱讀 6557

注:摘出解析xml兩個關鍵函式

import xml.sax

import xml.sax.handler

class

saxhandler

(xml.sax.contenthandler):

def__init__

(self):

self.tag=none

self.attribute=

defstartelement

(self, tag, attributes):

self.tag = tag

defcharacters

(self, content):

if self.tag == 'name':

if content != '\n'

and content != ' '

and content != ' ':

defendelement

(self, name):

pass

defgetdata

(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

python sax方式解析xml

dom方式在解析xml資料時是將整個文件樹載入到記憶體中,因此在解析大型一點的xml資料時沒什麼優勢,這個時候可以考慮使用sax的方式解析 首先要實現自己的xml.sax.handler.contenthandler內容處理者類 主要是過載以下方法 def init self xml.sax.han...

IOS內建NSXMLParser解析xml

nsxmlparser解析xml格式的資料 用法如下 首先,nsxmlparser必須繼續nsxmlparserdelegate協議 inte ce xmlhelper nsobject 首先設定xml資料,並初始化nsxmlparser void viewdidload 遍例xml的節點 void...

使用原生的NSXmlParser解析xml資料

下面是本人使用原聲nsxmlparser對xml資料進行的解析。這裡有篇有一篇很不錯的教程,使用gdataxml庫對xml資料進行的解析,而且還有對xml資料格式的組建,講解的很是詳細。import viewcontroller.h pragma mark xml解析器 xml資料解析器 inte ...