将具有不同属性的多个xml文件合并为一个属性
问题描述:
我想将多个xml文件合并为一个。我遇到过多个以前回答类似的解决方案。但是,我还没有找到适合我的问题的方法。我有3个不同属性的XML文件。其中一个xml文件有<main1></main>
。我试图抓取其他xml文件的内容,并将其与现有数据一起放入此标记中。将具有不同属性的多个xml文件合并为一个属性
test1.xml
<acura>
<Brand>Acura</Brand>
<Model>NSX 2017</Model>
<Price>156000</Price>
</acura>
file2.xml
<honda>
<Brand>Honda</Brand>
<Model>Accord</Model>
<Price>24</Price>
</honda>
something3.xml
<main>
<bmw>
<Brand>BMW</Brand>
<Model>5 Series</Model>
<Price>51200</Price>
</bwm>
</main>
答
您可能需要知道的是insert
最主要的。
解析每个文件,然后使用Brand
作为父母或祖父母导航到汽车的商品。最后insert
。
>>> import os
>>> os.chdir('c:/scratch')
>>> from lxml import etree
>>> test1 = etree.parse('test1.xml')
>>> file2 = etree.parse('file2.xml')
>>> something3 = etree.parse('something3.xml')
>>> acura = test1.find('Brand').getparent()
>>> acura
<Element acura at 0xa27388>
>>> honda = file2.find('Brand').getparent()
>>> main = something3.xpath('.//Brand')[0].getparent().getparent()
>>> main.insert(0, acura)
>>> main.insert(0, honda)
>>> str = etree.tostring(main, pretty_print=True)
>>> str
b'<main>\n<honda>\n <Brand>Honda</Brand>\n <Model>Accord</Model>\n <Price>24</Price>\n</honda><acura>\n <Brand>Acura</Brand>\n <Model>NSX 2017</Model>\n <Price>156000</Price>\n</acura><bmw>\n <Brand>BMW</Brand>\n <Model>5 Series</Model>\n <Price>51200</Price>\n</bmw>\n</main>\n'
您是否已经有任何代码,或者您是否想要某人为您写代码?如果你有,请显示它,否则我不确定有人会写代码。如果不需要使用elementtree,我有类似的代码,我可以根据您的需要采用这些代码。 – TitanFighter
文件(汽车)中的数据总是不一样?是否可能重复? –
@TitanFighter我一直在努力工作的代码[这里](http://*.com/questions/15921642/merging-xml-files-using-pythons-elementtree)但没有运气 – MaryCoding