from xml.dom.minidom import Document
from Endcode.common.log_rule import log
class GenerateXML:
def __init__(self):
self.doc = Document()
self.annotation = None
def write_node(self, node_name, node_value):
node = self.doc.createElement(node_name)
node_texts = self.doc.createTextNode(node_value)
node.appendChild(node_texts)
return node
def writefile(self, filename):
try:
with open(filename, 'w', encoding='UTF-8') as f:
self.doc.writexml(f, indent='',addindent='\t',newl='\n',encoding='UTF-8')
except Exception as e:
log.error(f"writefile error is : {str(e)}")
def writeXml(self, filename):
try:
self.annotation = self.doc.createElement('annotation')
node_folder = self.write_node(node_name="folder", node_value="folder")
node_filenames = self.write_node(node_name="filename", node_value="文件名")
size = self.size_node
node_object = self.node_object
self.doc.appendChild(self.annotation)
self.annotation.appendChild(node_folder)
self.annotation.appendChild(node_filenames)
self.annotation.appendChild(size)
self.annotation.appendChild(node_object)
self.writefile(filename)
except Exception as e:
log.error(f"writeXml error is : {str(e)}")
def size_node(self):
node_width = self.write_node(node_name="width", node_value="宽")
node_height = self.write_node(node_name="height", node_value="高")
node_depth = self.write_node(node_name="depth", node_value="depth")
size = self.doc.createElement('size')
size.appendChild(node_width)
size.appendChild(node_height)
size.appendChild(node_depth)
return size
def bndbox(self):
node_P1 = self.write_node(node_name="P1", node_value="(777, 403)")
node_P2 = self.write_node(node_name="P2", node_value="(777, 403)")
node_P3 = self.write_node(node_name="P3", node_value="(777, 403)")
node_P4 = self.write_node(node_name="P4", node_value="(777, 403)")
bndbox = self.doc.createElement('bndbox')
bndbox.appendChild(node_P1)
bndbox.appendChild(node_P2)
bndbox.appendChild(node_P3)
bndbox.appendChild(node_P4)
return bndbox
def node_object(self):
node_name = self.write_node(node_name="name", node_value="label_value")
node_ID = self.write_node(node_name="ID", node_value="ID")
node_bndbox = self.bndbox()
objects = self.doc.createElement('object')
objects.appendChild(node_name)
objects.appendChild(node_ID)
objects.appendChild(node_bndbox)
return objects
python 生成 xml
最新推荐文章于 2023-05-17 18:13:15 发布