读取xml文件
理解xml文件
首先应该明白xml文件里到底有什么,xml文件是一个有着标签和内容的一个文件,通过标签可以寻找到需要的信息。
<annotation>
<folder>mayidata</folder>
<filename>mayifour.jpg</filename>
#文件的存储路径
<path>F:\MyCode\data\mayidata\mayifour.jpg</path>
<source>
<database>Unknown</database>
</source>
#图片的大小
<size>
<width>1080</width>
<height>1428</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>nl</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>409</xmin>
<ymin>306</ymin>
<xmax>622</xmax>
<ymax>506</ymax>
</bndbox>
</object>
</annotation>
解析xml文件
其中调用函数ET.parse解析xml的文件返回的是一个对象,其有属性和方法。其中parse返回的对象是一个树。而find和findall是返回的对象是元素。
xml_files="F:/MyCode/data/test/testtwo.xml"
tree=ET.parse(xml_files).getroot()
#得到根目录下的元素
size=tree.find("size")
#因为在 xml文件中只有一个带有size标签的元素因此选用find方法
w=int(size.find("width").text)
#利用.text去将标签中的文本提取出来
h=int(size.find("height").text)
for obj in root.iter('object'):#遍历了全部的object标签
name=obj.find("name")
一开始在寻找name标签使用findall发现没有寻找到,然后通过实验发现findall也是在当前的层级下进行寻找。并不能进入obj下的层级进行寻找。