python 解析xml

使用xml.etree.ElementTree模塊來解析XML文件。java

ElementTree模塊中提供了兩個類用來完成這個目的:app

  • ElementTree表示整個XML文件(一個樹形結構)
  • Element表示樹中的一個元素(結點)

導入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獲取值

 

尊重勞動成果:http://www.javashuo.com/article/p-fqvswzxs-ea.html

相關文章
相關標籤/搜索