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 :
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>
et le pg python suivant :
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)
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
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 : < 
>