使用xml.etree.ElementTree模塊來解析XML文件。java
ElementTree模塊中提供了兩個類用來完成這個目的:app
導入ElementTree模塊: 函數
import xml.etree.ElementTree as ET
導入parse解析器: url
from xml.etree.ElementTree import parse
首先須要打開一個xml文件,本地文件使用open函數,若是是互聯網文件,則使用urlopen:.net
f = open('migapp.xml', 'rt', encoding='utf-8') # 或者 open('migapp.xml', 'rt', encoding='utf-8',error='ignore')
而後對XML進行解析:code
xml文件:此處的xml文件我有刪除,與下邊的coding並不對應。xml
coding:blog
#解析根元素 tree = ET.parse(data) root = tree.getroot() print('root.tag =', root.tag) print('root.attrib =', root.attrib) # 解析根子部分 for child in root: # 僅能夠解析出root的兒子,不能解析出root的子孫 print(child.tag) print(child.attrib) # attrib is a dict # 經過索引解析根的子孫 print(root[0][0].tag) print(root[0][0].text) # 完整練習 data = open(filepath, 'rt', encoding='utf-8',errors='replace') tree = ET.parse(data) root = tree.getroot() text_list =[] #return for element in root.findall('Award'): text_list.append(element.find(columns[0]).text) text_list.append(element.find(columns[1]).text[6:]) text_list.append(element.find(columns[2]).text) text_list.append(element.find(columns[3])[0].text) text_list.append(element.find(columns[4])[2][0].text) text_list.append(element.find(columns[5]).text) text_list.append(element.find(columns[6])[0].text) data.close()# 記得關閉流
總結:索引
一、由根root出發findall,進而find某個屬性,進而經過[][]方式獲取子部utf-8
二、不知道tag名稱的狀況下,能夠經過tag獲取標籤名,text獲取值