Pergunta

Eu tenho um documento XML "abc.xml":

Eu preciso escrever uma função de substituir (nome, newvalue), que pode substituir o nó de valor com tag 'name' com o novo valor e escrevê-lo de volta para o disco. Isso é possível em python? Como devo fazer isso?

Foi útil?

Solução

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()

Veja minidom cartilha e Referência da API .

# cat abc.xml
<root>
  <a>
    <c>zap</c>
  </a>
  <b>
  </b>
</root>

Outras dicas

Claro que é possível. O módulo xml.etree.ElementTree irá ajudá-lo com análise de XML, encontrando tags e substituindo valores.

Se você conhece um pouco mais sobre o arquivo XML que deseja alterar, você provavelmente pode tornar a tarefa um pouco mais fácil do que se você precisa escrever uma função genérica que irá lidar com qualquer arquivo XML.

Se você já está familiarizado com DOM de análise, há um pacote xml.dom usar em vez do ElementTree.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top