from xml.etree import ElementTree as et
def replace_element(elem, replacement): # tested
'''replace the content of an ElementTree Element by that of another one.
>>> original = 'dfg'
>>> new = 'ddffgg'
>>> elem = et.fromstring(original)
>>> replacement = et.fromstring(new)
>>> elem_id = id(elem)
>>> replace_element(elem, replacement)
>>> print(elem_id == id(elem)) # same object as before
True
>>> print(et.tostring(elem) == new)# but with new content
True
>>> print(new)
ddffgg
>>> print(et.tostring(elem))
ddffgg
'''
elem.clear()
elem.text = replacement.text
elem.tail = replacement.tail
elem.tag = replacement.tag
elem.attrib = replacement.attrib
try:
elem[:] = replacement[:] # quick and works with Python 2.x but not 3.x
except AssertionError:
#print("Assertion error") # uncomment for testing
del elem[:]
for child in replacement:
elem.append(child)
import doctest
doctest.testmod()