Python Minidom: Cambiar el valor del nodo

Estoy usando la biblioteca minidom de Python para probar y manipular algunos archivos XML. Aquí hay un archivo de ejemplo:

  http://www.this-is-a-url.com/ This is some information!   http://www.this-is-a-url.com/ This is some information!   http://www.this-is-a-url.com/ This is some information!   

Lo que tengo que hacer, es tomar el valor en “descripción” y ponerlo en “enlace” para que ambos digan “¡Esto es algo de información!”. He tratado de hacerlo así:

 #!/usr/bin/python from xml.dom.minidom import parse xmlData = parse("file.xml") itmNode = xmlData.getElementsByTagName("item") for n in itmNode: n.childNodes[1] = n.childNodes[3] n.childNodes[1].tagName = "link" print xmlData.toxml() 

Sin embargo, “n.childNodes [1] = n.childNodes [3]” parece vincular los dos nodos juntos, así que cuando hago “n.childNodes [1] .tagName =” link “” para corregir el nombre de AMBOS nodos secundarios “link” donde antes estaban ambos “description”.

Además, si uso “n.childNodes [1] .nodeValue” los cambios no funcionan y el XML se imprime en su forma original. ¿Qué estoy haciendo mal?

No estoy seguro de que pueda modificar el DOM en su lugar con xml.dom.minidom ( xml.dom.minidom creación de todo el documento desde cero con nuevos valores debería funcionar).

De todos modos, si acepta una solución basada en xml.etree.ElementTree (recomiendo encarecidamente usarla ya que proporciona una interfaz más amigable), entonces podría usar el siguiente código:

 from xml.etree.ElementTree import ElementTree, dump tree = ElementTree() tree.parse('file.xml') items = tree.findall('item') for item in items: link, description = list(item) link.text = description.text dump(tree)