Итак, у меня есть большой XML-файл с данными, которые я разбираю. Пример приведен ниже:Как выполнить итерацию через ElementTree и удалить все теги <mark>?
<statement>
<plist>
<p>Hello Stack Overflow.</p>
<p>This doesn't <mark type="NA" /> seem to work!</p>
</plist>
</statement>
Программа Я разработал только возвращает «Привет Stack Overflow Это не» Для того, чтобы разобрать остальную часть строки Я хотел бы, чтобы удалить метки метки на перед тем разбор. Используя функцию root.findall ('.// mark'), я смог найти метки, но root.remove (метки), когда цикл с возвратом функции findall не работает, потому что путь от корня к этим тегам неизвестен , Я также попытался найти все экземпляры p-тегов и найти их для меток-меток, а затем удалить их с помощью «p-тега» .remove («tag tag»), это не провалилось, но, похоже, не работало. Какие-либо предложения?
Это не дублирование всего, что требует импорта lxml, так как это может иметь отношения NO и должно быть разрешено с использованием только функциональности дерева элементов.
Чтобы удалить элемент, вам, очевидно, необходимо знать * parent * элемента. Просмотрели ли вы методы, доступные в элементе 'ElementTree'? – larsks
Да, прямой доступ к родительскому узлу отсутствует. Но, как я уже говорил, все теги отметок находятся в тексте, заключенном p-тегами. Поэтому, повторяя все теги p и проверяя, включен ли «метка», я мог найти родительский узел (тэг p) и использовать его для удаления метки метки. Однако после того, как я закончу это и попытаюсь разобрать текст, текст все же отключается в точке, где был отмечен тег метки (или все еще есть). Так что я немного потерял. – JJJ1106
Существует * прямой доступ к родительскому узлу. – larsks