天天看點

xml資料處理--ElementTree子產品使用

下面是對1.xml的資料的處理代碼

# coding:utf-8
import xml.etree.ElementTree as ET
def main():
    person_data = {}
    f = open('1.xml')
    tree = ET.parse(f)
    root = tree.getroot()
    with open('data','w') as fp:
        for person in root.getiterator('person'):
            for item in person.getiterator():
                if isinstance(item.text,unicode):
                    item.text = item.text.encode('utf-8')
                if item.tag != 'person' and item.text is not None:
                    print >>fp,item.tag+":"+str(item.text)+"|",
            print >>fp
if __name__ == '__main__':
    main()      

通過代碼可以知道ElementTree在使用上比sax更加友善。

sax和ElementTree的比較:

sax:順序讀取資料,不能随意讀取,隻能從頭到尾解析一遍,不能修改資料。不受檔案大小限制。

ElementTree:輕量級的dom,可以使用疊代器周遊資料。可以修改資料,随意讀取資料。對于大資料來說比sax使用的記憶體要多很多,因為ElementTree需要載入整個資料。