IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Python Discussion :

Lire un fichier XML


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mars 2004
    Messages
    40
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 40
    Par défaut Lire un fichier XML
    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

  2. #2
    Membre Expert Avatar de pacificator
    Profil pro
    Inscrit en
    Août 2006
    Messages
    1 074
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Août 2006
    Messages : 1 074
    Par défaut
    salut,

    essaye:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    personnes = x.getPersonnes()
    print personnes[0].prenom
    print personnes[1].prenom

  3. #3
    Membre émérite Avatar de pop_up
    Profil pro
    Inscrit en
    Avril 2006
    Messages
    877
    Détails du profil
    Informations personnelles :
    Localisation : France, Rhône (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2006
    Messages : 877
    Par défaut
    Pourquoi tu utilises pas la librairie pour parser un fichier xml avec le parseur DOM ou SAX.

    Sinon il existe meme des outils developpés et optimisé pour ça du style "beautiful soup"

  4. #4
    Rédacteur

    Avatar de Matthieu Brucher
    Profil pro
    Développeur HPC
    Inscrit en
    Juillet 2005
    Messages
    9 810
    Détails du profil
    Informations personnelles :
    Âge : 43
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur HPC
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2005
    Messages : 9 810
    Par défaut
    Citation Envoyé par pop_up
    Pourquoi tu utilises pas la librairie pour parser un fichier xml avec le parseur DOM ou SAX.
    C'est ce qu'il fait, non ?

Discussions similaires

  1. Créer et lire un fichier xml
    Par Bruno1905 dans le forum C++Builder
    Réponses: 14
    Dernier message: 13/06/2007, 11h11
  2. Réponses: 1
    Dernier message: 17/01/2006, 07h42
  3. [DOM XML] Lire un fichier xml
    Par axel-erator dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 07/12/2005, 22h36
  4. lire un fichier xml
    Par stephanie5 dans le forum C++Builder
    Réponses: 6
    Dernier message: 18/11/2005, 16h34
  5. Comment lire un fichier XML ?
    Par jeromelef dans le forum Débuter
    Réponses: 6
    Dernier message: 29/06/2005, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo