获取XML文件的数据

22 篇文章 2 订阅
13 篇文章 1 订阅
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))

 

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值