xml_python_查看xml中所有的标记数据

作用:传入存储xml文件的根路径,显示 xml 文件中所有的数据信息

 1 import os
 2 import xml.dom.minidom
 3 
 4 def xml_label_names(xml_root_path):
 5     xml_files = os.listdir(xml_root_path)
 6     print(xml_root_path, ' 路径下有文件个数:', len(xml_files))
 7     for xml_file in xml_files:
 8         xml_path = os.path.join(xml_root_path, xml_file)
 9         # 打开xml文档
10         DOMTree = xml.dom.minidom.parse(xml_path)
11         # 得到文档元素对象
12         collection = DOMTree.documentElement
13 
14         ### 获取文件夹名和文件名
15         folder_name = collection.getElementsByTagName("folder")[0].childNodes[0].data
16         filename = collection.getElementsByTagName("filename")[0].childNodes[0].data
17         print('\n', 'folder_name: {}  ,filename {}'.format(folder_name, filename))
18 
19         ### 获取 xml 标记中的 size 信息
20         size_list = collection.getElementsByTagName("size")
21         size_depth = size_list[0].getElementsByTagName('depth')[0].childNodes[0].data
22         size_width = size_list[0].getElementsByTagName('width')[0].childNodes[0].data
23         size_height = size_list[0].getElementsByTagName('height')[0].childNodes[0].data
24         print('size 部分:  depth: {} ,\t {} ,\theight: {}'.format(size_depth, size_width, size_height))
25 
26         ### 得到标签名为object的信息
27         objectlist = collection.getElementsByTagName("object")
28         for objects in objectlist:
29             ### 每个 object 中得到子标签名为 name 的信息
30             namelist = objects.getElementsByTagName('name')
31             objectname = namelist[0].childNodes[0].data     ### 获得标记框的标签名
32             ### 获取标记框的标记信息
33             bndbox = objects.getElementsByTagName('bndbox')
34             for box in bndbox:
35                 # xmin = box.getElementsByTagName('xmin')
36                 # xmin = int(xmin[0].childNodes[0].data)   # 样例中获取方式是这样的,但简化之后可以变成后面四种方式
37                 xmin = int(box.getElementsByTagName('xmin')[0].childNodes[0].data)
38                 ymin = int(box.getElementsByTagName('ymin')[0].childNodes[0].data)
39                 xmax = int(box.getElementsByTagName('xmax')[0].childNodes[0].data)
40                 ymax = int(box.getElementsByTagName('ymax')[0].childNodes[0].data)
41                 bbox = [xmin, ymin, xmax, ymax]
42                 print('标签名:',  objectname, ' ,标记框:' , bbox)
43 
44 xml_root_path = '../data/xml'   # 存储 xml 的根路径
45 xml_label_names(xml_root_path)  # 传入 xml 的根路径,显示 xml 中所有的数据信息

运行结果如下:

 1 ../data/xml  路径下有文件个数: 2
 2 
 3  folder_name: images  ,filename Czech_003467.jpg
 4 size 部分:  depth: 3 ,     600 ,    height: 600
 5 标签名: D00  ,标记框: [348, 459, 392, 528]
 6 标签名: D10  ,标记框: [212, 452, 273, 471]
 7 标签名: D00  ,标记框: [66, 467, 113, 517]
 8 标签名: D00  ,标记框: [128, 437, 183, 508]
 9 
10  folder_name: images  ,filename Czech_003510.jpg
11 size 部分:  depth: 3 ,     600 ,    height: 600
12 标签名: D10  ,标记框: [1, 466, 171, 485]
13 标签名: D10  ,标记框: [1, 446, 171, 465]
14 标签名: D40  ,标记框: [135, 408, 201, 436]
原文地址:https://www.cnblogs.com/lyj0123/p/15682063.html