下面是對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需要載入整個資料。