Domanda

Ho un documento XML " abc.xml " ;:

Devo scrivere una funzione di sostituzione (nome, nuovo valore) che può sostituire il nodo valore con il tag 'nome' con il nuovo valore e riscriverlo sul disco. Questo è possibile in Python? Come dovrei farlo?

È stato utile?

Soluzione

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

Vedi minidom primer e Riferimento API .

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

Altri suggerimenti

Sicuro che è possibile. Il modulo xml.etree.ElementTree ti aiuterà con l'analisi di XML, la ricerca di tag e la sostituzione di valori.

Se sai qualcosa di più sul file XML che vuoi modificare, probabilmente puoi rendere l'attività un po 'più semplice rispetto a se hai bisogno di scrivere una funzione generica che gestirà qualsiasi file XML.

Se hai già familiarità con l'analisi del DOM, c'è un pacchetto xml.dom da usare al posto di quello ElementTree.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top