Python 将一个XML文件的对象附加到另一个XML文件
我正在进行对象检测,其中有两个XML文件,我想将XML文件中不存在的XML对象附加到新的XML文件中 请帮我做这个。如果有人能帮助我将对象附加到另一个XML中,我已经编写了一段代码来创建对象体系结构,这将非常好Python 将一个XML文件的对象附加到另一个XML文件,python,xml,elementtree,Python,Xml,Elementtree,我正在进行对象检测,其中有两个XML文件,我想将XML文件中不存在的XML对象附加到新的XML文件中 请帮我做这个。如果有人能帮助我将对象附加到另一个XML中,我已经编写了一段代码来创建对象体系结构,这将非常好 import os import xml.etree.ElementTree as ET import glob Old_XML_Location = "..." New_XML_Location = "..." for new_xml_file in glob.glob(New_X
import os
import xml.etree.ElementTree as ET
import glob
Old_XML_Location = "..."
New_XML_Location = "..."
for new_xml_file in glob.glob(New_XML_Location + '/*.xml'):
for old_xml_file in glob.glob(Old_XML_Location + '/*.xml'):
print(old_xml_file)
if os.path.basename(new_xml_file) == os.path.basename(old_xml_file):
#xml_list = []
tree = ET.parse(new_xml_file)
root = tree.getroot()
for member in root.findall('object'):
print(member[0].text)
#if member[0].text == "Time":
value = (member[0].text,
int(member[4][0].text),
int(member[4][1].text),
int(member[4][2].text),
int(member[4][3].text)
)
xlobject=ET.Element("object")
root.append(xlobject)
xlbname=ET.SubElement(xlobject,"name")
xlbname.text = value[0]
pose=ET.SubElement(xlobject,"pose")
pose.text="Unspecified"
truncate=ET.SubElement(xlobject,"truncated")
truncate.text="0"
difficult=ET.SubElement(xlobject,"difficult")
difficult.text="0"
bndbox=ET.SubElement(xlobject,"bndbox")
tree = ET.ElementTree(root)
xlxmin=ET.SubElement(bndbox,"xmin")
xlxmin.text=str(int(value[1]))
xlymin=ET.SubElement(bndbox,"ymin")
xlymin.text=str(int(value[2]))
xlxax=ET.SubElement(bndbox,"xmax")
xlxax.text=str(int(value[3]))
xlymax=ET.SubElement(bndbox,"ymax")
xlymax.text=str(int(value[4]))
tree = ET.ElementTree(root)
tree.write(old_xml_file)
# with open(old_xml_file, "w") as fh:
# fh.write(tree)
# else :
# print("False")
到目前为止,通过使用您的代码和小小的谷歌搜索,我已经将xmls组合为类ball和非ball。 这是密码
# -*- coding: utf-8 -*-
"""
Created on Mon Apr 6 06:24:41 2020
@author: sahab
"""
import os
import xml.etree.ElementTree as ET
import glob
for new_xml_file in glob.glob(r'E:\Cricket\Cricket\ball\*.xml'):
for old_xml_file in glob.glob(r'E:\Cricket\Cricket\noball\\' + os.path.basename(new_xml_file)):
print(old_xml_file)
old_tree = ET.parse(old_xml_file)
old_root = old_tree.getroot()
tree = ET.parse(new_xml_file)
root = tree.getroot()
for member in root.findall('object'):
print(member[0].text)
#if member[0].text == "Time":
value = (member[0].text,
int(member[4][0].text),
int(member[4][1].text),
int(member[4][2].text),
int(member[4][3].text)
)
print(value)
xlobject=ET.Element("object")
xlbname=ET.SubElement(xlobject,"name")
xlbname.text = value[0]
pose=ET.SubElement(xlobject,"pose")
pose.text="Unspecified"
truncate=ET.SubElement(xlobject,"truncated")
truncate.text="0"
difficult=ET.SubElement(xlobject,"difficult")
difficult.text="0"
bndbox=ET.SubElement(xlobject,"bndbox")
tree = ET.ElementTree(root)
xlxmin=ET.SubElement(bndbox,"xmin")
xlxmin.text=str(int(value[1]))
xlymin=ET.SubElement(bndbox,"ymin")
xlymin.text=str(int(value[2]))
xlxax=ET.SubElement(bndbox,"xmax")
xlxax.text=str(int(value[3]))
xlymax=ET.SubElement(bndbox,"ymax")
xlymax.text=str(int(value[4]))
old_root.append(xlobject)
with open(r'E:\Cricket\Cricket\combined\\' +os.path.basename(new_xml_file), "w") as fh:
tree = ET.ElementTree(old_root)
r = old_tree.getroot()
print (ET.tostring(r))
fh.write(ET.tostring(r).decode("utf-8"))
你到底在挣扎哪一部分?它在生成的XML文件中添加了两次对象。好吧,你做了什么尝试来解决这个问题吗?我正在尝试,但直到现在我都没有成功!!您可能会发现以下文章很有用: