1、前言
以VOC数据集中的XML标签为例,使用ElementTree解析XML文件
2、步骤
import xml.etree.ElementTree as ET
2.1. 读取XML文件
tree = ET.parse('./VOCdevkit/VOC2007/Annotations/000004.xml')
2.2. 获取根节点
root = tree.getroot()
2.3. 遍历指定字段的子节点
for j in root.iter('object'):
pass
注:
.tag # 得到当前节点的名字
.findtext('字段名') # 得到当前节点下指定字段的内容
.find('字段名') # 得到当前节点下的指定字段
.findall('字段名') # 得到当前节点下的所有指定字段
3、整体代码
import xml.etree.ElementTree as ET
tree = ET.parse('./VOCdevkit/VOC2007/Annotations/000004.xml')
root = tree.getroot() # 对应上图1
for j in root.iter('object'): # 对应上图2
print(j.tag, j.findtext('name'))
for i in j.iter('bndbox'): # 对应上图3
print('xmin={}, ymin={}, xmax={}, ymax={}'.format(i.findtext('xmin'), i.findtext('ymin'), i.findtext('xmax'), i.findtext('ymax')))
output:
object car
xmin=13, ymin=311, xmax=84, ymax=362
object car
xmin=362, ymin=330, xmax=500, ymax=389
object car
xmin=235, ymin=328, xmax=334, ymax=375
object car
xmin=175, ymin=327, xmax=252, ymax=364
object car
xmin=139, ymin=320, xmax=189, ymax=359
object car
xmin=108, ymin=325, xmax=150, ymax=353
object car
xmin=84, ymin=323, xmax=121, ymax=350