作用:传入存储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]