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()