import xml.dom.minidom as xmldom
import os
# 得到文档对象
domobj = xmldom.parse('C:\\Users\\Ilearn\\Desktop\\100005.xml')
# print("xmldom.parse:", type(domobj))
# 得到元素对象
elementobj = domobj.documentElement
# print ("domobj.documentElement:", type(elementobj))
# 获得子标签
# 由elementobj.getElementsByTagName("名称")就可以获得所有该key的元素值
# 注意下面的name,xmin均为数组,里面的元素不一定是一个
name = elementobj.getElementsByTagName("name")
xmin = elementobj.getElementsByTagName("xmin")
ymin = elementobj.getElementsByTagName("ymin")
xmax = elementobj.getElementsByTagName("xmax")
ymax = elementobj.getElementsByTagName("ymax")
for i in range(len(name)):
print(name[i].firstChild.data + ' ' + xmin[i].firstChild.data + ' ' + ymin[i].firstChild.data + ' ' + xmax[
i].firstChild.data + ' ' + ymax[i].firstChild.data)
获得文档对象,然后获得元素对象,然后就可以获得对应的标签了
注意,对应标签不一定是一个,所以如果直接操作xmin不加下标的话就会错的。
---------------------------------------更新2019/8/4---------------------------------------------
或者下面的方法也可以
import pickle
import xml.etree.ElementTree as ET
# -*- coding: UTF8 -*-
'''
<annotation>
<folder>图片</folder>
<filename>300002.JPG</filename>
<path>C:\Users\Ilearn\Desktop\图片\300002.JPG</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>6000</width>
<height>3376</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>tilt</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>2554</xmin>
<ymin>552</ymin>
<xmax>3914</xmax>
<ymax>964</ymax>
</bndbox>
</object>
</annotation>
'''
filename = 'C:\\Users\\Ilearn\\Desktop\\300001.xml'
tree = ET.parse(filename)
objs = tree.findall('object')
num_objs = len(objs)
for i, obj in enumerate(objs):
xmin = obj.find('bndbox').find('xmin').text
ymin = obj.find('bndbox').find('ymin').text
xmax = obj.find('bndbox').find('xmax').text
ymax = obj.find('bndbox').find('ymax').text
name = obj.find('name').text
print(str(i)+' '+str(xmin)+' '+str(ymin)+' '+str(xmax)+' '+str(ymax)+' '+str(name))