zoukankan      html  css  js  c++  java
  • 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]
  • 相关阅读:
    yii修改密码 弹出修改成功提示(八)
    yii模型规则的简单使用以及开启前端的验证(七)
    利用ab测试并发可靠么
    yii数据库链接(六)
    初始化collectionViewCell
    监听事件
    ControllerEvent
    代码构建视图
    DeveloperAppleHelp
    Xcode 小技巧
  • 原文地址:https://www.cnblogs.com/lyj0123/p/15682063.html
Copyright © 2011-2022 走看看