Frage

Ich habe ein XML-Dokument "abc.xml":

Ich brauche eine Funktion ersetzen (Name, newvalue) zu schreiben, die den Wert Knoten mit dem Tag ‚name‘ es auf die Festplatte ersetzen können mit dem neuen Wert und zurückschreiben. Ist das möglich in Python? Wie soll ich das tun?

War es hilfreich?

Lösung

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

Primer und API-Referenz .

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

Andere Tipps

Natürlich ist es möglich. Das xml.etree.ElementTree Modul wird Ihnen helfen, mit XML-Analyse, die Suche nach Tags und ersetzen Werten.

Wenn Sie ein wenig mehr über die XML-Datei wissen, die Sie ändern möchten, können Sie wahrscheinlich die Aufgabe, machen ein bisschen einfacher, als wenn Sie eine generische Funktion zu schreiben, die jede XML-Datei behandelt.

Wenn Sie bereits vertraut sind mit DOM-Parsing, gibt es ein xml.dom Paket einen anstelle des ElementTree zu verwenden.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top