一般用ElementTree包
import xml.etree.ElementTree as ET
首先传入xml文件名,创建解析对象:
tree = ET.parse(xml_file)
然后获取根结点:
root = tree.getroot()
获取了根结点,也就是整个xml的根结点,就可以用findall
来找子结点
比如找到’object’结点
root.findall("object")
,此时返回的是所有object结点的list,可以用index选择其中一个进行下一步操作
以下面这个xml为例
<annotation>
<folder>jpg</folder>
<filename>001801.jpg</filename>
<path>D:\part4_Picture\2019-7-8\wuhan_3\jpg\001801.jpg</path>
<source>
<database>Unknown</database>
</source>
<size>
<width>4608</width>
<height>2592</height>
<depth>3</depth>
</size>
<segmented>0</segmented>
<object>
<name>lsqxz</name>
<pose>Unspecified</pose>
<truncated>0</truncated>
<difficult>0</difficult>
<bndbox>
<xmin>2000</xmin>
<ymin>1236</ymin>
<xmax>2057</xmax>
<ymax>1298</ymax>
</bndbox>
</object>
</annotation>
object这个结点下面还有子结点,name,poe,bndbox等等
我们可以遍历所有的object结点,对每个Object结点进行分析
for obj in root.findall("object"):
cls_name = obj.findall("name")[0].text
bbox = obj.findall("bndbox")[0]
xmin = bbox.findall("xmin")[0].text
ymin = bbox.findall("ymin")[0].text