def undo(self, filename="", events={}): tree = etree.parse(filename) parent = findElementWithoutNamespace(tree, 'premis') # Remove last |events| from parent for event_el in parent.findall('.//{*}event')[-len(events):]: parent.remove(event_el) tree.write(filename, pretty_print=True, xml_declaration=True, encoding='UTF-8')
def undo(self, filename=None, elementToAppendTo=None, spec={}, info={}, index=None): tree = etree.parse(filename) parent = findElementWithoutNamespace(tree, elementToAppendTo) found = parent.findall('.//{*}%s' % spec['-name']) if index is None or index >= len(parent): parent.remove(found[-1]) else: parent.remove(parent[index]) tree.write(filename, pretty_print=True, xml_declaration=True, encoding='UTF-8')