Python基础-XML文件解析

本文最后更新于:2021年1月8日 晚上

XML 指可扩展标记语言(eXtensible Markup Language),常用于传输和存储数据。

  • 由标签对组成
  • 标签可以有属性:
  • 标签对可以嵌入数据:abc
  • 标签可以嵌入子标签(具有层级关系)
<annotation>
	<folder>VOC2007</folder>
	<filename>000001.jpg</filename>
	<source>
		<database>The VOC2007 Database</database>
		<annotation>PASCAL VOC2007</annotation>
		<image>flickr</image>
		<flickrid>341012865</flickrid>
	</source>
	<owner>
		<flickrid>Fried Camels</flickrid>
		<name>Jinky the Fruit Bat</name>
	</owner>
	<size>
		<width>353</width>
		<height>500</height>
		<depth>3</depth>
	</size>
	<segmented>0</segmented>
	<object>
		<name>dog</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>48</xmin>
			<ymin>240</ymin>
			<xmax>195</xmax>
			<ymax>371</ymax>
		</bndbox>
	</object>
	<object>
		<name>person</name>
		<pose>Left</pose>
		<truncated>1</truncated>
		<difficult>0</difficult>
		<bndbox>
			<xmin>8</xmin>
			<ymin>12</ymin>
			<xmax>352</xmax>
			<ymax>498</ymax>
		</bndbox>
	</object>
</annotation>

【1】通过xml.dom解析xml

from xml.dom.minidom import parse
import xml.dom.minidom
import os

#获取指定文件夹下的所有文件名
filePath = 'C:\\Users\\GWL\\Desktop\\Annotations\\'
dirs=os.listdir(filePath)

for file in dirs:
    file2=filePath+file
    #print(file)

    DOMTree = xml.dom.minidom.parse(file2)  #使用minidom解析器打开 XML 文档
    collection = DOMTree.documentElement    #得到xml文档对象
    objects = collection.getElementsByTagName("object")  #获取所有子标签object
    
    category = []
    #print("*****object*****")   
    for object in objects :
        name = object.getElementsByTagName('name')[0]  
        category.append(name.childNodes[0].data)
        #print(" %s" % name.childNodes[0].data)
    #print('\n')
    #a=len(category)
    if len(category)!=1:
        print(category,'\n')

遇到的问题

ImportError: No module named 'xml.dom'; 'xml' is not a package
  • 这是由于将python文件命称为xml.py,运行python程序时出现自导现象,从而报错!

参考链接

【1】Python XML 解析

【2】python xml.dom模块解析xml]

【3】python读取xml文件

【4】用python批量生成简单的xml文档


本博客所有文章除特别声明外,均采用 CC BY-SA 4.0 协议 ,转载请注明出处!