python 解析xml

使用xml.etree.ElementTree模块来解析XML文件。

ElementTree模块中提供了两个类用来完成这个目的:

  • ElementTree表示整个XML文件(一个树形结构)
  • Element表示树中的一个元素(结点)

导入ElementTree模块: 

import xml.etree.ElementTree as ET 

导入parse解析器: 

from xml.etree.ElementTree import parse

 首先需要打开一个xml文件,本地文件使用open函数,如果是互联网文件,则使用urlopen:

f = open('migapp.xml', 'rt', encoding='utf-8')  
# 或者 open('migapp.xml', 'rt', encoding='utf-8',error='ignore')  

然后对XML进行解析:

xml文件:此处的xml文件我有删除,与下边的coding并不对应。

174830_bK6B_1462678.png

 

 

 

 

 

 

 

 

 

 

 

coding:

#解析根元素
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()# 记得关闭流

总结:

1、由根root出发findall,进而find某个属性,进而通过[][]方式获取子部

2、不知道tag名称的情况下,可以通过tag获取标签名,text获取值

 

尊重劳动成果:https://my.oschina.net/u/1462678/blog/896922

转载于:https://my.oschina.net/u/1462678/blog/896922

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值