python读取三级目录式 xml 文件

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()等操作进行尝试探寻变量类型及属性

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章