python : How to combine data from multiple XML files

标签 python xml elementtree

我正在使用 Element Tree 来解析 XML 文件。我有多个 XML 文件。 XML 文件的元素由唯一键 (SKU) 标识,但其他标签不同。我想将对应于另一个文件中每个元素的标签组合起来。为此,我可以开始解析第一个 XML 的每个子元素并循环遍历其他文件的子元素以找到具有给定 sku 的元素:

tree = ET.parse(filename)
root = tree.getroot()
tree1 = ET.parse(filename1)
root1 = tree1.getroot()
...#more xmls
for child in root:
    sku = child.find('SKU').text
    for child1 in root1:
        sku1 = child1.find('SKU').text
        if sku == sku1:
            #do something

但是我发现这种方法效率不高。有更好的方法吗?

谢谢

编辑:例如。第一个 xml 具有以下形式的元素:

<product>
    <SKU>ABCD1234</SKU>
    <_Image>something</_Image>
    <_Image_Count>2</_Image_Count>
    <_Image2>something</_Image2>
    <_Image3>something</_Image3>
    <_Orignal_Image>something</_Orignal_Image>
</product>

第二个 XML 具有以下形式的元素:

<product>
    <Product_Code>ABCD1234</Product_Code>
    <Designer>xxx</Designer>
    <Taxon>yyy</Taxon>
    <Parent_Taxon>zzz</Parent_Taxon>
    <Taxonomy>aaa</Taxonomy>
    <Quantity>1</Quantity>
    <Cost>2</Cost>
    <MRP>3</MRP>
    <Price>4</Price>
</product>

我想合并这 2 个 XML 以获得:

<product>
    <SKU>ABCD1234</SKU>
    <_Image>something</_Image>
    <_Image_Count>2</_Image_Count>
    <_Image2>something</_Image2>
    <_Image3>something</_Image3>
    <_Orignal_Image>something</_Orignal_Image>
    <Product_Code>ABCD1234</Product_Code>
    <Designer>xxx</Designer>
    <Taxon>yyy</Taxon>
    <Parent_Taxon>zzz</Parent_Taxon>
    <Taxonomy>aaa</Taxonomy>
    <Quantity>1</Quantity>
    <Cost>2</Cost>
    <MRP>3</MRP>
    <Price>4</Price>
</product>

最佳答案

写一个类来管理每种类型的xml文件。它应该有一个方法,该方法获取 SKU 列表并返回具有您感兴趣的属性的事物集合。

另一个获取该集合,并使用它修改它拥有的 xml。

elementTree 对 xml 的支持有限,但查看您的示例文件,findall 方法将是获取“sku”节点集合的良好开端。

不要尝试一次完成所有操作,打开每个文件并使用嵌套循环绝对不是正确的方法。

关于 python : How to combine data from multiple XML files,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22273985/

相关文章:

python - 使用 python 将多行导入具有唯一约束的 SQL 表

python - 文件中字符最多的行?

c# - 如何将类序列化为属性?

xml - 如何在 PHP 中不显示警告的情况下检查字符串是否为有效 XML

android - android 中的 xml 到 json

Python 元素树

python - 生成器在列表理解中过早结束

python - 如果某些行不存在于其他数据帧中,Pandas 连接两个数据帧并保留一个数据集中的数据

python - 如何在 python 中使用 ElementTree 访问包含命名空间的 xml 中的属性值

python - 将压缩的 xml 提要解析到 ElementTree