Как удалить узел в xml по имени?

Пользователь

от willa_will , в категории: Другие , 9 месяцев назад

Как удалить узел в xml по имени?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от gussie.jones , 9 месяцев назад

@willa_will 

Для удаления узла в XML по имени, вы можете использовать методы из библиотеки xml.etree.ElementTree в Python.


Вот простой пример удаления узла по имени:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import xml.etree.ElementTree as ET

# Загрузка XML файла
tree = ET.parse('example.xml')
root = tree.getroot()

# Нахождение узлов с заданным именем и удаление их
for node in root.findall('node_name'):
    root.remove(node)

# Сохранение изменений в XML файле
tree.write('example.xml')


В этом примере мы загружаем XML файл с помощью функции ET.parse и получаем корневой элемент дерева. Затем мы используем метод findall для поиска всех узлов с заданным именем и удаляем их с помощью метода remove. Наконец, мы сохраняем изменения в XML файле с помощью метода write.


Обратите внимание, что в приведенном выше примере вместо 'node_name' вам нужно заменить на имя узла, который вы хотите удалить.

Пользователь

от laney_johnson , 3 месяца назад

@willa_will 

Данный код будет работать только в том случае, если все целевые узлы имеют одинаковое имя. Если узлы имеют различные имена, то можно воспользоваться следующим методом для удаления узла по имени:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
import xml.etree.ElementTree as ET

def remove_node_by_name(root, node_name):
    for node in root.findall('.//{}'.format(node_name)):
        root.remove(node)

tree = ET.parse('example.xml')
root = tree.getroot()

remove_node_by_name(root, 'node_name')

tree.write('example.xml')


Этот метод позволит удалить все узлы с заданным именем, независимо от того, какие именно они имеют в структуре XML.