Tôi đang cố hợp nhất nhiều tệp XML với nhau bằng Python và không có thư viện bên ngoài. Các tệp XML có các phần tử lồng nhau.Hợp nhất các tệp xml với các phần tử lồng nhau mà không có thư viện bên ngoài
mẫu file 1:
<root>
<element1>textA</element1>
<elements>
<nested1>text now</nested1>
</elements>
</root>
mẫu file 2:
<root>
<element2>textB</element2>
<elements>
<nested1>text after</nested1>
<nested2>new text</nested2>
</elements>
</root>
Những gì tôi muốn:
<root>
<element1>textA</element1>
<element2>textB</element2>
<elements>
<nested1>text after</nested1>
<nested2>new text</nested2>
</elements>
</root>
Những gì tôi đã thử:
Từ this answer.
from xml.etree import ElementTree as et
def combine_xml(files):
first = None
for filename in files:
data = et.parse(filename).getroot()
if first is None:
first = data
else:
first.extend(data)
if first is not None:
return et.tostring(first)
Những gì tôi có được:
<root>
<element1>textA</element1>
<elements>
<nested1>text now</nested1>
</elements>
<element2>textB</element2>
<elements>
<nested1>text after</nested1>
<nested2>new text</nested2>
</elements>
</root>
Tôi hy vọng bạn có thể xem và hiểu vấn đề của tôi. Tôi đang tìm một giải pháp thích hợp, mọi hướng dẫn sẽ thật tuyệt vời.
Để làm rõ vấn đề, sử dụng giải pháp hiện tại mà tôi có, các phần tử lồng nhau không được hợp nhất.
Hoạt động hoàn hảo, cảm ơn, tôi vừa mới bắt đầu viết mã của riêng mình. :) –
Rất tốt, cảm ơn. Chúng tôi cũng cần hợp nhất các thuộc tính. Nó có thể được thực hiện bằng cách thêm 'one.attrib.update (other.attrib)' vào lúc bắt đầu 'combined_element' và' mapping [el.tag] .attrib.update (el.attrib) 'sau khi thay thế văn bản phần tử. –
Ồ đúng, tôi đã quên mất các thuộc tính. Nắm bắt tốt. – jadkik94