Question

J'ai un document XML "abc.xml":

Je dois écrire une fonction replace (name, newvalue) qui peut remplacer le nœud de valeur par la balise 'name' par la nouvelle valeur et l'écrire sur le disque. Est-ce possible en python? Comment dois-je faire cela?

Était-ce utile?

La solution

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

Voir minidom amorce et Référence de l'API .

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

Autres conseils

Bien sûr que c'est possible. Le module xml.etree.ElementTree vous aidera à analyser XML, à rechercher des balises et à remplacer des valeurs.

Si vous en savez un peu plus sur le fichier XML que vous souhaitez modifier, vous pourrez probablement rendre la tâche un peu plus facile que si vous deviez écrire une fonction générique qui gérera n'importe quel fichier XML.

Si vous êtes déjà familiarisé avec l'analyse DOM, vous devez utiliser un package xml.dom à la place de celui ElementTree.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top