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 :

Récupération de données XML avec Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2020
    Messages : 10
    Par défaut Récupération de données XML avec Python
    Bonjour,

    Je suis en train de créer une application qui lit un fichier xml pour formater les infos dans un fichier pdf lisible par les personnes qui en ont besoins.
    Je bloque sur un petit soucis. Mon fichier xml est de ce type :

    Code XML : 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
    <BaliseRoot>
        <BaliseRootEnfant>
    			<Balise ID="text1">
    				<Balise1 Unit="text">text</Balise1>
    				<Balise2 Unit="text">-text</Balise2>
    				<Balise3 Unit="text">text</Balise3>
    				<Balise4 Unit="text">text</Balise4>
    				<Balise1 Unit="text">text</Balise1>
    				<Balise2 Unit="text">text</Balise2>
    				<Balise3 Unit="text">text</Balise3>
    				<Balise4 Unit="text">text</Balise4 >
    				<Balise1 Unit="text">text</Balise1 >
    				<Balise2 Unit="text">text</Balise2 >
    				<Balise3 Unit="text">text</Balise3 >
    				<Balise4 Unit="text">text</Balise4 >
    			</Balise >
    			<Balise ID="text2">
    				<Balise1 Unit="text">text</Balise1>
    				<Balise2 Unit="text">-text</Balise2>
    				<Balise3 Unit="text">text</Balise3>
    				<Balise4 Unit="text">text</Balise4>
    				<Balise1 Unit="text">text</Balise1>
    				<Balise2 Unit="text">text</Balise2>
    				<Balise3 Unit="text">text</Balise3>
    				<Balise4 Unit="text">text</Balise4 >
    				<Balise1 Unit="text">text</Balise1 >
    				<Balise2 Unit="text">text</Balise2 >
    				<Balise3 Unit="text">text</Balise3 >
    				<Balise4 Unit="text">text</Balise4 >
    			</Balise >
        </BaliseRootEnfant>
    </BaliseRoot>

    Mon code est :

    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
    # récupération du WINDDIR (Wind Direction)
        m = 0
        x=0
        list_temp = []
        list_definitive  = []
     
     
        for recup_balise in etape.xpath("/BaliseRoot/BaliseRootEnfant/Balise[" + str(x) + "]/Balise1[1]"):
            list_temp.append(recup_balise.text)
            if m == 5:
                list_temp.reverse()
     
                list_definitive += list_temp.copy()
                m = 0
                list_temp.clear()
     
            m += 1
            x += 1
    Si je mets un print(list_temp) après list_temp.append(recup_balise.text) je ne récupère que le celui de la balise <Balise ID="text1"> et si je mets un print(list_definitive) à la fin de la boucle ma liste est vide. SI quelqu'un peut m'aider à comprendre d'où vient mon erreur je suis fan, s'il vous plait.

    Merci d'avance.

  2. #2
    Membre habitué
    Femme Profil pro
    Développeur Java
    Inscrit en
    Mai 2020
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Eure et Loir (Centre)

    Informations professionnelles :
    Activité : Développeur Java

    Informations forums :
    Inscription : Mai 2020
    Messages : 10
    Par défaut
    Finalement Problème résolu alors que cela fait quelques jours que je bloque dessus. Merci quand même.

  3. #3
    Expert confirmé
    Avatar de jurassic pork
    Homme Profil pro
    Bidouilleur
    Inscrit en
    Décembre 2008
    Messages
    4 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Bidouilleur
    Secteur : Industrie

    Informations forums :
    Inscription : Décembre 2008
    Messages : 4 241
    Par défaut
    hello,
    Citation Envoyé par Mgvt28 Voir le message
    Finalement Problème résolu alors que cela fait quelques jours que je bloque dessus. Merci quand même.
    merci d'avoir donné la solution . Surtout que le code que tu as donné est incomplet et je me demande comment il peut fonctionner ( avec les données XML que l'on voit le xpath ne devrait pas fonctionner). D'après ce xpath tu cherches à récupérer le texte de la première balise Balise1 de chaque noeud Balise.
    Avec le code 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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    from lxml import etree
    chaineXml = """
    <BaliseRoot>
        <BaliseRootEnfant>
                <Balise ID="text1">
                    <Balise1 Unit="text">texta</Balise1>
                    <Balise2 Unit="text">-textb</Balise2>
                    <Balise3 Unit="text">textc</Balise3>
                    <Balise4 Unit="text">textd</Balise4>
                    <Balise1 Unit="text">texte</Balise1>
                    <Balise2 Unit="text">textf</Balise2>
                    <Balise3 Unit="text">textg</Balise3>
                    <Balise4 Unit="text">texth</Balise4 >
                    <Balise1 Unit="text">texti</Balise1 >
                    <Balise2 Unit="text">textj</Balise2 >
                    <Balise3 Unit="text">textk</Balise3 >
                    <Balise4 Unit="text">textl</Balise4 >
                </Balise >
                <Balise ID="text2">
                    <Balise1 Unit="text">textA</Balise1>
                    <Balise2 Unit="text">textB</Balise2>
                    <Balise3 Unit="text">textC</Balise3>
                    <Balise4 Unit="text">textD</Balise4>
                    <Balise1 Unit="text">textE</Balise1>
                    <Balise2 Unit="text">textF</Balise2>
                    <Balise3 Unit="text">textG</Balise3>
                    <Balise4 Unit="text">textH</Balise4 >
                    <Balise1 Unit="text">textI</Balise1 >
                    <Balise2 Unit="text">textJ</Balise2 >
                    <Balise3 Unit="text">textK</Balise3 >
                    <Balise4 Unit="text">textL</Balise4 >
                </Balise >
        </BaliseRootEnfant>
    </BaliseRoot>
    """
    etape = etree.fromstring(chaineXml)
     
    for recup_balise in etape.xpath("//Balise/Balise1[1]"):
        print(recup_balise.text)
    j'obtiens :
    texta
    textA
    Ami calmant, J.P

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Remplacer les données XML avec Python
    Par toufizc dans le forum Interfaçage autre langage
    Réponses: 3
    Dernier message: 28/05/2019, 11h39
  2. [SimpleXML] recuperer données xml avec simplexml
    Par astrolane dans le forum Bibliothèques et frameworks
    Réponses: 4
    Dernier message: 29/08/2007, 14h39
  3. probleme d'affichage de données XML avec XSL
    Par sundjata dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 08/06/2006, 18h59
  4. [SimpleXML] Récupération des données XML
    Par squalito dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 30/05/2006, 14h22
  5. récupération de données SQL avec C++
    Par krusty++ dans le forum Bibliothèques
    Réponses: 2
    Dernier message: 27/03/2006, 15h10

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