Bonjour,
Je développe un pg pour remplacer des valeurs dans un fichier xml, J'ai regardé beaucoup d'exemples pour manipuler des fichiers xml en python, mais chaque exemple utilise des modules différents donc je suis à chaque fois dans l'impasse.
exemple de fichier à traiter :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
<message:hasMember>
	<aixm:AirportHeliport gml:id="DD">
		<aixm:ElevatedPoint srsDimension="2" gml:id="JJ">
			<gml:pos srsDimension="3">KK </gml:pos>
			<aixm:elevation uom="M">LL</aixm:elevation>
		</aixm:ElevatedPoint>
	</aixm:AirportHeliport>
</message:hasMember>
Dans ce fichier il y a des valeurs dans des tags (DD ou 2 ou JJ) et des valeurs encadrées par des tags (KK ou LL).
Ce que je cherche à faire (et qui me semble être le b a ba) c'est récupérer les noms des tags et les valeurs associées pour les remplacer par d'autres valeurs. Je suis partie sur la piste suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
from xml.dom.NodeFilter import NodeFilter
from xml.dom.ext.reader import Sax2
 
reader = Sax2.Reader()
 
doc = reader.fromStream("Exec/XmlTemplate.xml")
iterator=doc.createNodeIterator(doc,NodeFilter.SHOW_ALL,None,0)
elem=iterator.nextNode()
while elem:
	if elem.attributes != None:
		for attrEntry in elem.attributes.items():
   			print "elem.attributes.items() :",elem.nodeName,attrEntry[-1].name,":",attrEntry[-1].value
	else:
		if elem.nodeValue != None:
			print "elem.nodeValue : ",elem,elem.nodeName,"<",elem.nodeValue,">"
      	elem=iterator.nextNode()
Mais malgré les tests, je ne sais pas encore avec certitude comment savoir si c'est une feuille ou un noeud ... et surtout je ne sais pas comment faire de substitution de valeurs dans mon arbre.
Merci de vos suggestions