Pregunta

Tengo un documento XML " abc.xml " ;:

Necesito escribir una función replace (name, newvalue) que pueda reemplazar el nodo de valor con la etiqueta 'name' con el nuevo valor y volver a escribirlo en el disco. ¿Es esto posible en python? ¿Cómo debo hacer esto?

¿Fue útil?

Solución

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

Ver minidom primer y Referencia de API .

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

Otros consejos

Claro que es posible. El módulo xml.etree.ElementTree lo ayudará a analizar XML, encontrar etiquetas y reemplazar valores.

Si sabe un poco más sobre el archivo XML que desea cambiar, probablemente pueda hacer la tarea un poco más fácil que si necesita escribir una función genérica que maneje cualquier archivo XML.

Si ya está familiarizado con el análisis de DOM, hay un paquete xml.dom para usar en lugar del ElementTree.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top