Неожиданный результат при использовании удаления lxmlPython

Программы на Python
Гость
Неожиданный результат при использовании удаления lxml

Сообщение Гость »


У меня есть XML, и мне нужно удалить несколько типов тегов. Я использовал метод iter для проверки каждого элемента. Я заметил, что если есть вложенный элемент, его дочерний элемент также удаляется. Следующий тег не будет удален. Например, как показано ниже, тег delete2 является дочерним для тега delete1, и оба будут удалены. По какой-то причине раздел тегов не может быть удален. Это ошибка? Или я что-то пропустил? Спасибо.
# %% из lxml импортировать etree # неожиданный вывод при удалении вложенных элементов xml_str = """ """ корень = etree.fromstring(xml_str) для элемента в root.iter(): is_remove = Ложь если element.tag == "delete1": is_remove = Истина если element.tag == "delete2": is_remove = Истина if element.tag == "раздел" и element.attrib.get("name") == "удалить": is_remove = Истина print(f"{element} {is_remove}") если is_remove: element.getparent().remove(элемент) print(etree.tostring(root,coding="utf-8").decode("utf-8")) неожиданный результат: False False Ложь True True

Вернуться в «Python»