我有一个XML文件100的目录中。 该XML的结构是完全一样的。 不过,我想添加一些XML的节点一起并保留其余的,因为它是。
实施例1的xml
<?xml-stylesheet type='text/xsl' href='image_metadata_stylesheet.xsl'?>
<dataset>
<name>imglab dataset</name>
<comment>Created by imglab tool.</comment>
<images>
<image file='/home/orcl/user102339/Area123/Geo_Tag_0812-0420.jpg'></image>
<image file='/home/orcl/user102339/Area123/Geo_Tag_0812-0544.jpg'>
<box top='343' left='72' width='92' height='29'>
<label>LBS_Marks
</label></box></image>
<image file='/home/orcl/user102339/Area123/Geo_Tag_0812-0489.jpg'></image>
</images>
</dataset>
实施例2的xml
<?xml-stylesheet type='text/xsl' href='image_metadata_stylesheet.xsl'?>
<dataset>
<name>imglab dataset</name>
<comment>Created by imglab tool.</comment>
<images>
<image file="/home/orcl/user102339/Area123/Geo_Tag_0812-0420.jpg">
<box top="505" left="326" width="59" height="32">
<label>SBS_Marks</label>
</box>
</image>
<image file="/home/orcl/user102339/Area123/Geo_Tag_0812-0544.jpg">
<box top="507" left="331" width="50" height="27">
<label>SBS_Marks</label>
</box>
</image>
<image file="/home/orcl/user102339/Area123/Geo_Tag_0812-0489.jpg">
<box top="509" left="330" width="51" height="25">
<label>SBS_Marks</label>
</box>
</image>
</images>
</dataset>
在这两个数据集,所述图像是相同的,不过的标记是不同的。 例如,在第一个例子中,第一个图像0420.jpg没有任何与之相关的框的标签,而在第二个文件相同的图像具有与相关联的标签SBS_Marks箱标签。 我想这些文件合并在一起,因此,对于每个图像,我只得到了箱子坐标和标签。 例如所需的输出将是如下:
<?xml-stylesheet type='text/xsl' href='image_metadata_stylesheet.xsl'?>
<dataset>
<name>imglab dataset</name>
<comment>Created by imglab tool.</comment>
<images>
<image file='/home/orcl/user102339/Area123/Geo_Tag_0812-0420.jpg'>
<box top="505" left="326" width="59" height="32">
<label>SBS_Marks</label>
</box>
</image>
<image file='/home/orcl/user102339/Area123/Geo_Tag_0812-0544.jpg'>
<box top='343' left='72' width='92' height='29'>
<label>LBS_Marks
</label></box>
<box top="507" left="331" width="50" height="27">
<label>SBS_Marks</label>
</box>
</image>
<image file='/home/orcl/user102339/Area123/Geo_Tag_0812-0489.jpg'>
<box top="509" left="330" width="51" height="25">
<label>SBS_Marks</label>
</box>
</image>
</images>
</dataset>
在所期望的输出示例中,第一图像0420.jpg具有从第二文件中的框和标签元件,第二图像0544.jpg具有两个框和标签每一个从文件1和文件2和第三图像具有从所述框和标签第二个文件。
我尝试使用此代码:
#!/usr/bin/env python
import sys
from xml.etree import ElementTree
def run(files):
first = None
for filename in files:
data = ElementTree.parse(filename).getroot()
if first is None:
first = data
else:
first.extend(data)
if first is not None:
print ElementTree.tostring(first)
if __name__ == "__main__":
run(sys.argv[1:])
但是,这只是打印文件的内容之一后,其他,但不会合并。 我不知道如何创建一个XSL模板,因此不能用它试试。 有人可以与上述一个更好的代码帮助或提供一个XSL模板,可以帮助我在合并所有这些文件的文件夹中,请。