Bonjour,
Je suis tombé sur un cas incompréhensible lors du parcours d'une structure xml. Voici mon codeles traces suivantes illustrent que dans l'exécution de la boucle la plus profonde (ligne 8), 3 éléments sont à explorer alors que le pg ne va que 2 fois dans cette boucle :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 for i in range(len(self.l_toxml)): print "self.l_toxml[%d]=%s child=%s" % (i,self.l_toxml[i],self.l_toxml[0].childNodes) mainChild = self.l_toxml[0].childNodes[0] for toxml in self.l_toxml[1:]: for i in range(len(toxml.childNodes)): print " toxml.childNodes[%d]=%s child=%s" % (i,toxml.childNodes[i],toxml.childNodes[i].childNodes) for elt in toxml.childNodes[i].childNodes: print " elt=%s" % (elt) mainChild.appendChild(elt)Par contre avec la modification suivante de mon code, tout se passe correctement, mais je ne vois pas le rapport :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 self.l_toxml[0]=<xml.dom.minidom.Document instance at 0xb7bce1cc> child=[<DOM Element: message:AIXMBasicMessage at 0xb7bea4ec>] self.l_toxml[1]=<xml.dom.minidom.Document instance at 0xb7b4d92c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7bea4ec>] self.l_toxml[2]=<xml.dom.minidom.Document instance at 0xb7b5336c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7bea4ec>] self.l_toxml[3]=<xml.dom.minidom.Document instance at 0xb7b6248c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7bea4ec>] self.l_toxml[4]=<xml.dom.minidom.Document instance at 0xb7b6cccc> child=[<DOM Element: message:AIXMBasicMessage at 0xb7bea4ec>] self.l_toxml[5]=<xml.dom.minidom.Document instance at 0xb7b72d8c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7bea4ec>] self.l_toxml[6]=<xml.dom.minidom.Document instance at 0xb7afa10c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7bea4ec>] toxml.childNodes[0]=<DOM Element: message:AIXMBasicMessage at 0xb7b4da2c> child=[<DOM Text node "u'\n\t'">, <DOM Element: message:hasMember at 0xb7b4deec>, <DOM Text node "u'\n'">] elt=<DOM Text node "u'\n\t'"> elt=<DOM Text node "u'\n'"> toxml.childNodes[0]=<DOM Element: message:AIXMBasicMessage at 0xb7b57d8c> child=[<DOM Text node "u'\n\t'">, <DOM Element: message:hasMember at 0xb7b5d26c>, ...et les traces correspondantes:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 for i in range(len(self.l_toxml)): print "self.l_toxml[%d]=%s child=%s" % (i,self.l_toxml[i],self.l_toxml[0].childNodes) mainChild = self.l_toxml[0].childNodes[0] for toxml in self.l_toxml[1:]: for i in range(len(toxml.childNodes)): print " toxml.childNodes[%d]=%s child=%s" % (i,toxml.childNodes[i],toxml.childNodes[i].childNodes) elt = [] elt.append(toxml.childNodes[i].childNodes[0]) elt.append(toxml.childNodes[i].childNodes[1]) elt.append(toxml.childNodes[i].childNodes[2]) for j in range(len(toxml.childNodes[i].childNodes)): print " elt[%d]=%s" % (j,elt[j]) mainChild.appendChild(elt[j])Toute explication est la bienvenue.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13 self.l_toxml[0]=<xml.dom.minidom.Document instance at 0xb7c6e1cc> child=[<DOM Element: message:AIXMBasicMessage at 0xb7c8a4ec>] self.l_toxml[1]=<xml.dom.minidom.Document instance at 0xb7bed92c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7c8a4ec>] self.l_toxml[2]=<xml.dom.minidom.Document instance at 0xb7bf336c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7c8a4ec>] self.l_toxml[3]=<xml.dom.minidom.Document instance at 0xb7c0248c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7c8a4ec>] self.l_toxml[4]=<xml.dom.minidom.Document instance at 0xb7c0cccc> child=[<DOM Element: message:AIXMBasicMessage at 0xb7c8a4ec>] self.l_toxml[5]=<xml.dom.minidom.Document instance at 0xb7c12d8c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7c8a4ec>] self.l_toxml[6]=<xml.dom.minidom.Document instance at 0xb7b9a10c> child=[<DOM Element: message:AIXMBasicMessage at 0xb7c8a4ec>] toxml.childNodes[0]=<DOM Element: message:AIXMBasicMessage at 0xb7beda2c> child=[<DOM Text node "u'\n\t'">, <DOM Element: message:hasMember at 0xb7bedeec>, <DOM Text node "u'\n'">] elt[0]=<DOM Text node "u'\n\t'"> elt[1]=<DOM Element: message:hasMember at 0xb7bedeec> elt[2]=<DOM Text node "u'\n'"> toxml.childNodes[0]=<DOM Element: message:AIXMBasicMessage at 0xb7bf7d8c> child=[<DOM Text node "u'\n\t'">, <DOM Element: message:hasMember at 0xb7bfd26c>, <DOM Text node "u'\n'">] ...
Merci
Partager