xml文件格式:
<?xml version="1.0" encoding="utf-8"?>
<TrainingImages Version="1.0">
<Items number="37778">
<Item imageName="00016450.jpg" vehicleID="0001" cameraID="c001" colorID="1" typeID="4" />
<Item imageName="00016460.jpg" vehicleID="0001" cameraID="c001" colorID="1" typeID="4" />
<Item imageName="00016470.jpg" vehicleID="0001" cameraID="c001" colorID="1" typeID="4" />
<Item imageName="00016480.jpg" vehicleID="0001" cameraID="c001" colorID="1" typeID="4" />
</Items>
</TrainingImages>
可以看到呈现三级目录:TrainingImages-Items-Item
现在要完成的任务是:
将imageName和colorID中的内容提取出来放在一个txt文件中;
我们事先准备好一个value.txt文件和py文件在同一目录下;
涉及的知识点有:
- 读取xml格式文件
- 通过循环语句向txt文件中写入内容
上代码:
import os
import sys
import xml.dom.minidom
dom=xml.dom.minidom.parse('train_label.xml') #获取xml文件的dom树
root=dom.documentElement #获取根节点,也就是TrainingImages中的内容
Items=root.getElementsByTagName('Items') #获取Items的内容
Item=Items[0] #第一个元素中保存在其中的内容,这一步要注意
its=Item.getElementsByTagName('Item') #获取具体的Item
print(len(its)) #打印出长度,如示例中有4个数据,就有四个
filename = 'value.txt' #要写入的txt文件名
with open(filename,'w') as f: #将txt写入操作放在循环之前,实现循环写入
for it in its:
name=it.getAttribute("imageName") #获取xml子标题的属性值
color=it.getAttribute("colorID")
f.write(name)
f.write(" ")
f.write(color)
f.write("\n")
print("ok")
如上代码+注释,可以通过dir()、len()、type()等操作进行尝试探寻变量类型及属性