Установка значения для узла в XML-документе в Python
-
05-07-2019 - |
Вопрос
У меня есть XML-документ " abc.xml " ;:
Мне нужно написать функцию replace (name, newvalue), которая может заменить узел значения тегом 'name' новым значением и записать его обратно на диск. Возможно ли это в Python? Как мне это сделать?
Решение
import xml.dom.minidom
filename='abc.xml'
doc = xml.dom.minidom.parse(filename)
print doc.toxml()
c = doc.getElementsByTagName("c")
print c[0].toxml()
c[0].childNodes[0].nodeValue = 'zip'
print doc.toxml()
def replace(tagname, newvalue):
'''doc is global, first occurrence of tagname gets it!'''
doc.getElementsByTagName(tagname)[0].childNodes[0].nodeValue = newvalue
replace('c', 'zit')
print doc.toxml()
См. minidom primer и Справочник по API .
# cat abc.xml
<root>
<a>
<c>zap</c>
</a>
<b>
</b>
</root>
Другие советы
Конечно, это возможно. Модуль xml.etree.ElementTree поможет вам разобрать XML, найти теги и заменить значения.
Если вы знаете немного больше о XML-файле, который хотите изменить, вы, вероятно, можете сделать задачу немного проще, чем если бы вам нужно было написать универсальную функцию, которая будет обрабатывать любой XML-файл.
Если вы уже знакомы с анализом DOM, существует пакет xml.dom, который нужно использовать вместо ElementTree.