Bonjour je souhaite récuperer des valeurs contenu dans un fichier xml, or je rencontre deux problèmes:

1- je n'arrive pas à lire deux fois de suite un champ du fichier via ces deux lignes, si je laisse une des deux lignes cela marche, mais les deux ensemble ca plante

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
    print x.getPersonnes()[0].prenom
    print x.getPersonnes()[1].prenom
2- Je n'arrive pas a lire dans une sous branche, par exemple la ville dans mon exemple de fichier xml ci dessous:


Mon fichier xml:

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
17
18
19
20
21
22
23
24
25
26
27
28
 
<quil>
 
    <personne>
 
        <nom>Durant</nom>
 
        <prenom>Stephan</prenom>
 
	<adresse>
 
		<ville>Bruxelles</ville>
 
	</adresse>
 
    </personne>
 
    <personne>
 
        <nom>Dupont</nom>
 
        <prenom>Henri</prenom>
 
	<adresse/>
 
    </personne>
 
</quil>

Voici mon code python pour essayer de lire:

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
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
class Personne:
 
    nom = None
 
    prenom = None
 
    adresse = Adresse()
 
 
 
    def __init__(self):
 
        pass
 
 
 
class Adresse:
 
    ville = None
 
 
 
    def __init__(self):
 
        pass
 
 
 
class TransformXmlToPersonnes:
 
 
 
    __currentNode__ = None
 
    __personneList__ = None
 
 
 
    def __init__(self):
 
        self.readXml()
 
 
 
    def readXml(self):
 
        from xml.dom.minidom import parse
 
        self.doc = parse('personnes.xml')
 
 
 
    def getRootElement(self):
 
        if self.__currentNode__ == None:
 
            self.__currentNode__ = self.doc.documentElement
 
        return self.__currentNode__
 
 
 
    def getPersonnes(self):
 
        if self.__personneList__ != None:
 
            return 
 
        self.__personneList__ = []
 
        for personnes in self.getRootElement().getElementsByTagName("personne"):
 
            if personnes.nodeType == personnes.ELEMENT_NODE:
 
                p = Personne()
 
                try:
 
                    p.nom = self.getText(personnes.getElementsByTagName("nom")[0])
 
                    p.prenom = self.getText(personnes.getElementsByTagName("prenom")[0])
 
                    p.adresse = self.getAdresse(personnes.getElementsByTagName("adresse")[0])
 
                except:
 
                    print 'Un des TAGS suivant est manquents : nom, prenom, adresse'
 
                self.__personneList__.append(p)
 
        return self.__personneList__
 
 
 
    def getAdresse(self, none):
 
        adress = Adresse()
 
        try:
 
            adress.ville = self.getText(node.getElementsByTagName("ville")[0])
 
        except:
 
            adress.ville = None
 
        return adress
 
 
 
    def getText(self, node):
 
        return node.childNodes[0].nodeValue
 
 
 
if __name__ == "__main__":
 
    x=TransformXmlToPersonnes()
 
    print x.getPersonnes()[0].prenom
    print x.getPersonnes()[1].prenom

Merci pour votre aide