Bonjour,
J'ai parcouru la doc de DOM http://docs.python.org/library/xml.dom.html pour manipuler les fichiers XML. J'ai encore des lacunes.
Par rapport à l'exemple suivant, comment distinguer les vrais feuilles (en mon sens) qui sont entre tags (comme KK encadré par <aixm:gml:pos>) et celles qui n'en sont pas (comme les espaces encadrés par <aixm:ElevatedPoint>).
Ensuite comment modifier une valeur fournie par node.nodeValue, je ne vois que des méthodes pour agir sur des noeuds, moi je veux garder les mêmes noeuds mais changer leur valeur.
Merci de vos éclaircissements
Fichier xml suivant :et le pg python suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 <message:AIXMBasicMessage xmlns:message="A" xmlns:aixm="B" xmlns:gml="C" gml:id="I"> <aixm:ElevatedPoint srsDimension="2" gml:id="JJ"> <gml:pos srsDimension="3">KK </gml:pos> <aixm:elevation uom="M">LL</aixm:elevation> </aixm:ElevatedPoint> </message:AIXMBasicMessage>J'obtiens alors les traces suivantes:
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 class Application__: def __init__(self): datasource = open("Exec/test.xml") dom = parse(datasource) l = dom.documentElement self.next(l.childNodes) def next(self,l): for node in l: if node.nodeValue != None: print "nodeName : ",node.parentNode.nodeName," nodeValue : <",node.nodeValue," >" if node.hasAttributes() == 1: for attrEntry in node.attributes.items(): print " node : ",node.nodeName," attributes : ",attrEntry[0],attrEntry[-1] if node.childNodes != []: self.next(node.childNodes)
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 nodeName : message:AIXMBasicMessage nodeValue : < > node : aixm:ElevatedPoint attributes : gml:id JJ node : aixm:ElevatedPoint attributes : srsDimension 2 nodeName : aixm:ElevatedPoint nodeValue : < > node : gml:pos attributes : srsDimension 3 nodeName : gml:pos nodeValue : < KK > nodeName : aixm:ElevatedPoint nodeValue : < > node : aixm:elevation attributes : uom M nodeName : aixm:elevation nodeValue : < LL > nodeName : aixm:ElevatedPoint nodeValue : < > nodeName : message:AIXMBasicMessage nodeValue : < >
Partager