1 ### 参考链接:https://blog.csdn.net/qq_37174526/article/details/89489212
2 from xml.dom importminidom3
4 #参数:xml_save_path、filename(文件名称)、filepath(文件绝对路径)、
5 defwriteXML(xml_save_path):6 #1.创建 DOM 树对象
7 dom =minidom.Document()8 #2.创建根节点。每次都要用DOM对象来创建任何节点。
9 root_node = dom.createElement('annotation')10 #3.用 DOM 对象添加根节点
11 dom.appendChild(root_node)12
13 ## folder 子节点
14 folder_node = dom.createElement('folder') #创建子节点
15 root_node.appendChild(folder_node) #将创建的子节点挂到根节点上
16 folder_text = dom.createTextNode('lyj') #创建文本节点
17 folder_node.appendChild(folder_text) #将创建的文本节点挂到子节点上
18
19 ## filename 子节点, 需要传进参数 filename
20 filename_node = dom.createElement('filename')21 root_node.appendChild(filename_node)22 filename_text = dom.createTextNode('文件名称')23 filename_node.appendChild(filename_text)24
25 ## filepath 子节点, 需要传进参数 filepath
26 filepath_node = dom.createElement('filepath')27 root_node.appendChild(filepath_node)28 filepath_text = dom.createTextNode('文件绝对路径')29 filepath_node.appendChild(filepath_text)30
31 ## size 子节点,需要传进参数 w、h、c
32 size_node = dom.createElement('size')33 root_node.appendChild(size_node)34
35 width_node = dom.createElement('width')36 size_node.appendChild(width_node)37 width_text = dom.createTextNode('图宽')38 width_node.appendChild(width_text)39
40 height_node = dom.createElement('height')41 size_node.appendChild(height_node)42 height_text = dom.createTextNode('图高')43 height_node.appendChild(height_text)44
45 depth_node = dom.createElement('depth')46 size_node.appendChild(depth_node)47 depth_text = dom.createTextNode('通道数')48 depth_node.appendChild(depth_text)49
50 ### 创建 object 节点
51 for i in range(1):52 object_node = dom.createElement('object')53 root_node.appendChild(object_node)54
55 name_node = dom.createElement('name')56 object_node.appendChild(name_node)57 name_text = dom.createTextNode('类别名称')58 name_node.appendChild(name_text)59
60 bndbox_node = dom.createElement('bndbox')61 object_node.appendChild(bndbox_node)62
63 xmin_node = dom.createElement('xmin')64 bndbox_node.appendChild(xmin_node)65 xmin_text = dom.createTextNode('x_min')66 xmin_node.appendChild(xmin_text)67
68 ymin_node = dom.createElement('ymin')69 bndbox_node.appendChild(ymin_node)70 ymin_text = dom.createTextNode('y_min')71 ymin_node.appendChild(ymin_text)72
73 xmax_node = dom.createElement('xmax')74 bndbox_node.appendChild(xmax_node)75 xmax_text = dom.createTextNode('x_max')76 xmax_node.appendChild(xmax_text)77
78 ymax_node = dom.createElement('ymax')79 bndbox_node.appendChild(ymax_node)80 ymax_text = dom.createTextNode('y_max')81 ymax_node.appendChild(ymax_text)82
83
84 #每一个结点对象(包括dom对象本身)都有输出XML内容的方法,如:toxml()--字符串, toprettyxml()--美化树形格式。
85
86 try:87 with open(xml_save_path,'w',encoding='UTF-8') as fh:88 #4.writexml()第一个参数是目标文件对象,第二个参数是根节点的缩进格式,第三个参数是其他子节点的缩进格式,
89 #第四个参数制定了换行格式,第五个参数制定了xml内容的编码。
90 dom.writexml(fh,indent='',addindent='\t',newl='\n',encoding='UTF-8')91 print('OK, xml 文件创建成功。')92 exceptException as err:93 print('错误:{err}'.format(err=err))94
95 if __name__ == '__main__':96 xml_save_path = '/home/aistudio/myxml2.xml'
97 writeXML(xml_save_path)
本文介绍了如何使用Python创建一个符合Pascal VOC标准的XML文件,详细步骤包括创建DOM树、添加folder、filename、filepath、size及object节点,适用于图像标注任务。

217

被折叠的 条评论
为什么被折叠?



