2017-03-03 80 views
0

我想將多個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> 
+0

您是否已經有任何代碼,或者您是否想要某人爲您寫代碼?如果你有,請顯示它,否則我不確定有人會寫代碼。如果不需要使用elementtree,我有類似的代碼,我可以根據您的需要採用這些代碼。 – TitanFighter

+0

文件(汽車)中的數據總是不一樣?是否可能重複? –

+0

@TitanFighter我一直在努力工作的代碼[這裏](http://stackoverflow.com/questions/15921642/merging-xml-files-using-pythons-elementtree)但沒有運氣 – MaryCoding

回答

1

您可能需要知道的是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'