मैं पाइथन और कोई बाहरी पुस्तकालयों का उपयोग करके एकाधिक एक्सएमएल फाइलों को एक साथ मर्ज करने की कोशिश कर रहा हूं। एक्सएमएल फाइलों में नेस्टेड तत्व हैं।बाहरी पुस्तकालयों के बिना नेस्टेड तत्वों के साथ एक्सएमएल फाइलों को मर्ज करें
नमूना फ़ाइल 1:
<root>
<element1>textA</element1>
<elements>
<nested1>text now</nested1>
</elements>
</root>
नमूना फ़ाइल 2:
<root>
<element2>textB</element2>
<elements>
<nested1>text after</nested1>
<nested2>new text</nested2>
</elements>
</root>
मैं क्या चाहते हैं:
<root>
<element1>textA</element1>
<element2>textB</element2>
<elements>
<nested1>text after</nested1>
<nested2>new text</nested2>
</elements>
</root>
मैंने जो कोशिश की है:
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)
मुझे क्या मिलेगा:
<root>
<element1>textA</element1>
<elements>
<nested1>text now</nested1>
</elements>
<element2>textB</element2>
<elements>
<nested1>text after</nested1>
<nested2>new text</nested2>
</elements>
</root>
मुझे आशा है कि आप देख सकते हैं और अपनी समस्या समझ सकते हैं। मैं एक उचित समाधान की तलाश में हूं, कोई मार्गदर्शन अद्भुत होगा।
समस्या को स्पष्ट करने के लिए, मेरे पास मौजूद वर्तमान समाधान का उपयोग करके, नेस्टेड तत्व विलय नहीं किए जाते हैं।
पूरी तरह से काम करता है, धन्यवाद, मैंने अभी अपना कोड लिखना शुरू कर दिया था। :) –
अच्छा, धन्यवाद। हमें विशेषताओं को मर्ज करने की भी आवश्यकता है। तत्व टेक्स्ट को बदलने के बाद 'combine_element' और 'मैपिंग [el.tag] .attrib.update (el.attrib)' की भिखारी पर' one.attrib.update (other.attrib) 'जोड़कर किया जा सकता है। –
ओह ठीक है, मैं विशेषताओं के बारे में भूल गया था। अच्छी पकड़। – jadkik94