Установка значения для узла в XML-документе в Python

StackOverflow https://stackoverflow.com/questions/1602919

  •  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.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top