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 :

Parcours XML Python


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2020
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 28
    Par défaut Parcours XML Python
    Bonjour,

    J'essaie de récupérer les attributs nom de chaque noeud user en python sur le fichier XML ci-dessous. Pour cela, j'ai cherché quelle librairie je pouvais utiliser et je suis tombé sur ElementTree.
    Mais en testant quelques exemples de la documentation que j'ai trouvé ci-dessous, cela ne marche pas sur le fichier XML ci-dessous.
    https://docs.python.org/3/library/xm...ementtree.html
    https://lxml.de/tutorial.html


    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
    <?xml version="1.0" encoding="UTF-8"?>
    <book xmlns:test="http://test.com" xmlns:test2="test2.com" xmlns:xsi="http://test3.com">
    <users>
        <user data-id="101">
            <nom>Zorro</nom>
            <metier>Danseur</metier>
        </user>
        <user data-id="102">
            <nom>Hulk</nom>
            <metier>Footballeur</metier>
        </user>
        <user data-id="103">
            <nom>Zidane</nom>
            <metier>Star</metier>
        </user>
        <user data-id="104">
            <nom>Beans</nom>
            <metier>Epicier</metier>
        </user>
        <userSpecial data-id="100">
            <nom>Dorian</nom>
            <metier>Pompier</metier>
        </userSpecial>
        <user data-id="105">
            <nom>Batman</nom>
            <metier>Veterinaire</metier>
        </user>
        <user data-id="106">
            <nom>Spiderman</nom>
            <metier>Veterinaire</metier>
        </user>
    </users>
    </book>
    J'ai fait quelques tests en python et je crois que c'est la balise book qui fait que cela ne marche pas.
    Est-ce que vous pourriez me montrer le code python qui permet de lister tous noms de chaque noeud user en utilisant ElementTree ?

    Auriez-vous aussi des liens avec de la documentation sur le parcours de XML en python et d'autres librairies autres que ElementTree ?

    Merci.

  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut !

    Une fonction toute simple suffirait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def test():
        LISTE = []
        #Text = open('your_xml.xml', encoding='utf-8').read()
        for l in text.split('<nom>')[1:]:
            LISTE.append(l[:l.index('<')])
        return LISTE

  3. #3
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2020
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 28
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Salut !

    Une fonction toute simple suffirait :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    def test():
        LISTE = []
        #Text = open('your_xml.xml', encoding='utf-8').read()
        for l in text.split('<nom>')[1:]:
            LISTE.append(l[:l.index('<')])
        return LISTE
    Merci j'y avais pensé, mais je voudrais le faire en utilisant elementEtree.

  4. #4
    Invité
    Invité(e)
    Par défaut
    Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for nom in root.iter('nom'):
        print(nom.text)
    Je ne connaissais pas plus elementtree que toi...

  5. #5
    Membre averti
    Homme Profil pro
    Architecte de système d'information
    Inscrit en
    Avril 2020
    Messages
    28
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Architecte de système d'information

    Informations forums :
    Inscription : Avril 2020
    Messages : 28
    Par défaut
    Citation Envoyé par LeNarvalo Voir le message
    Dans ce cas :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    for nom in root.iter('nom'):
        print(nom.text)
    Je ne connaissais pas plus elementtree que toi...
    oui, mais ça va afficher tous les noms de n'importe quel noeud alors que je veux afficher le nom d'un noeud en particulier qui est user.

  6. #6
    Rédacteur/Modérateur

    Avatar de Jerome Briot
    Homme Profil pro
    Freelance mécatronique - Conseil, conception et formation
    Inscrit en
    Novembre 2006
    Messages
    20 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Freelance mécatronique - Conseil, conception et formation

    Informations forums :
    Inscription : Novembre 2006
    Messages : 20 317
    Par défaut
    Comme ceci ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    import xml.etree.ElementTree as ET
     
    tree = ET.parse("test.xml")
     
    user = tree.find(".//users/user[@data-id='102']")
     
    print(user.find('nom').text)

Discussions similaires

  1. [C#][XML] parcours XML débutant
    Par loic_86 dans le forum C#
    Réponses: 5
    Dernier message: 03/04/2011, 12h46
  2. Parcours XML recursif
    Par gostbuster dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 04/08/2009, 16h48
  3. [DOM] Parcours XML
    Par speedev dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 06/11/2007, 12h16
  4. actionScript classe parcours XML
    Par LeXo dans le forum Flash
    Réponses: 2
    Dernier message: 26/06/2007, 16h06
  5. Parcours xml
    Par jeff_! dans le forum Général JavaScript
    Réponses: 21
    Dernier message: 30/11/2005, 17h08

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