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 :

Python & XML


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2018
    Messages : 45
    Par défaut Python & XML
    Bonjour,

    Je dispose d'un XML dont la structure est la suivante :

    Code xml : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    <users>
      <user>
        <name>
        <firtname>
        .../...
      <ascending>
        <bande1="bande1" year="1936">Michel</band1>
        .../...
      </ascending>
      </user>
    </users>


    Je parviens à lire les valeurs users/user/name et autre grace à :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    tree = ET.parse("data.xml")
    root = tree.getroot()
    print('name: ' + root[0][0].text)

    mais je parviens à descendre dans la branche ascending.

    Un exemple à me donner SVP.

  2. #2
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Bonjour
    Citation Envoyé par F1TRN Voir le message
    Je dispose d'un XML dont la structure est la suivante
    Ouais. Déjà tas les tag [code] et [/code] pour montrer un code => http://club.developpez.com/regles/#LIII-E
    Ensuite ton XML est incomplet. Pas de "</name>" ni de "</firtname>" (firstname???). Et la balise "bande1" est incorrecte. C'est <bande1 nom=valeur> et non pas <bande1=valeur>. Je veux dire que si tu veux de l'aide, le minimum c'est quand-même de donner un exemple fonctionnel qu'on pourra utiliser chez-nous. Pareil, ce "ET" sans dire de quelle librairie il s'agit (ok fortes présomptions que ce soit xml.etree.ElementTree mais si cela va sans dire, cela va encore mieux en le disant car il y a d'autres librairies pour lire du XML).

    Citation Envoyé par F1TRN Voir le message
    Un exemple à me donner SVP.
    Code python : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    #!/usr/bin/env python3
    # coding: utf-8
     
    import xml.etree.ElementTree as ET
     
    tree = ET.parse("data.xml")
    root = tree.getroot()
    print('name: ' + root[0][0].text) 
    for level1 in root:
    	for level2 in level1:
    		for level3 in level2:
    			print(level3.tag, level3.attrib)

    https://docs.python.org/3/library/xm...ementtree.html
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  3. #3
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2018
    Messages : 45
    Par défaut
    Sve@r,

    Merci de ta réponse. Oui effectivement chacun de mes tag sont <tag>valeur</tag> il se ferment bien.
    Mon XML exemple était là pour simplifier, ça y ressemble, mais ce n'est pas ça à 100%.

    Dans mon véritable XML, j'ai une section de type:
    Code XML : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    <calculatedconditions>
    <band name="B1" time="day">Poor</band>
    <band name="B2" time="day">Good</band>
    <band name="B3" time="day">Good</band>
    <band name="B4" time="day">Fair</band>
    <band name="B5" time="night">Fair</band>
    <band name="B6" time="night">Good</band>
    <band name="B7" time="night">Good</band>
    <band name="B8" time="night">Poor</band>
    </calculatedconditions>

    J'y accède via:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            for level3 in level2:
                print('level3 : ' + level3.tag, level3.attrib, level3.text)
    et obtiens:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    level3 : band {'name': 'B1', 'time': 'day'} Poor
    comment obtenir les valeur pour band, name, time dans des variable (ou mieux). En fait j'arrive pas à lire par exemple band = Poor, name = B1 et time = Day.
    Le but pour moi est de mettre ces données dans une base MySQL.

    Ce doit être simple mais comme je débute depuis ce matin en python, j'y perds mon latin.

    merci de ton aide.

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par F1TRN Voir le message
    J'y accède via:

    for level3 in level2:
    print('level3 : ' + level3.tag, level3.attrib, level3.text)

    et obtiens:
    level3 : band {'name': 'B1', 'time': 'day'} Poor

    comment obtenir les valeur pour band, name, time dans des variable (ou mieux).
    Ces valeurs sont déjà dans des variables (puisque ton programme les affiche à l'écran, il les prend fatalement dans des variables). C'est la variable "level3.attrib" qui les contient. Cette variable est un dictionnaire, c'est à dire un tableau où les éléments ne sont pas indicés par leur rang mais indexés par une clef (ce que dans d'autres langages on nomme "tableaux associatifs").
    Ainsi la valeur "name" est dans la variable level3.attrib["name"]. Et la valeur "time" est dans la variable... (je te laisse finir).

    Citation Envoyé par F1TRN Voir le message
    comme je débute depuis ce matin en python...
    Ah oui effectivement. Je sens que tu fais ça "à l'arrache" pensant aller ainsi plus vite mais prendre le temps d'apprendre les bases c'est un investissement que tu récupères ensuite au centuple...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

  5. #5
    Membre averti
    Homme Profil pro
    Chef de projet en SSII
    Inscrit en
    Juin 2018
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Chef de projet en SSII
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Juin 2018
    Messages : 45
    Par défaut
    J'men suis sortis par:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    print('level3.name: ' + level3.get('name'))

  6. #6
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 835
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 835
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par F1TRN Voir le message
    J'men suis sortis par:

    print('level3.name: ' + level3.get('name'))
    Tu t'en serais sorti aussi par print('level3.name: ' + level3.attrib["name"]) comme je l'avais dit. Chose amusante, tu peux aussi écrire print('level3.name: ' + level3.attrib.get("name")). Le premier "get()" (le tiens) c'est une méthode de l'objet "xml.etree.ElementTree.Element" et le second c'est une méthode de dictionnaire standard Python. Et les deux ont le même nom. Et les deux font grosso-modo la même chose.
    Mais passer par les outils officiels des librairies qu'on utilise est souvent préférable.
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

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

Discussions similaires

  1. Python et XML avec minodom
    Par dedalios dans le forum Général Python
    Réponses: 15
    Dernier message: 15/07/2017, 11h50
  2. python et xml
    Par kali38 dans le forum Général Python
    Réponses: 0
    Dernier message: 10/05/2011, 11h22
  3. Python et Xml
    Par yassineonline dans le forum Forum général ERP
    Réponses: 0
    Dernier message: 02/04/2011, 16h26
  4. Python et xml
    Par t_om84 dans le forum Général Python
    Réponses: 2
    Dernier message: 30/09/2010, 16h58
  5. python e xml problème balise de fermeture
    Par chrix10.2 dans le forum Général Python
    Réponses: 2
    Dernier message: 19/12/2006, 09h55

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