Установка значения для узла в XML-документе в Python - PullRequest
0 голосов
/ 21 октября 2009

У меня есть XML-документ "abc.xml":

Мне нужно написать функцию replace (name, newvalue), которая может заменить узел значения тегом 'name' новым значением и записать его обратно на диск. Возможно ли это в Python? Как мне это сделать?

Ответы [ 2 ]

2 голосов
/ 21 октября 2009
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 учебник для начинающих и Справочник по API .

# cat abc.xml
<root>
  <a>
    <c>zap</c>
  </a>
  <b>
  </b>
</root>
2 голосов
/ 21 октября 2009

Конечно, это возможно. Модуль xml.etree.ElementTree поможет вам разобрать XML, найти теги и заменить значения.

Если вы знаете немного больше о XML-файле, который хотите изменить, вы, вероятно, можете сделать задачу немного проще, чем если бы вам нужно было написать универсальную функцию, которая будет обрабатывать любой XML-файл.

Если вы уже знакомы с анализом DOM, есть пакет xml.dom, который нужно использовать вместо ElementTree.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...