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 :

Lecture de xml


Sujet :

Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut Lecture de xml
    Bonjours tous le monde!

    J'essaye d'ecrire un code python qui permet d'ouvrir et d'extraire les variables val, x et y d'un fichier xml de la forme suivante:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
     
    <nrml>
         <gmfSet>
                 <gmf IMT="PGA">
    <node val="0.108820054424" x="-1.45899321606" y="-78.9910038674"/>
    <node val="0.110349940564" x="-1.46798643212" y="-78.9910038314"/>
    <node val="0.110600507769" x="-1.45899321606" y="-78.9820077349"/>
    .
    .
    .
    A terme j'aimerai pouvoir stocker les 3 variables dans 3 vecteurs colonne séparé
    Je suis vraiment débutant en xml et j'ai du coup essayer le classique ElementTree method:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import xml.etree.ElementTree as ET
    tree = ET.parse('myfile.xml')
    Mais je n'arrive pas du tout a avoir accés aux différentes variables...

    J'ai aussi essayé le minidom
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    DOMTree = xml.dom.minidom.parse('myfile.xml')
    collection = DOMTree.documentElement
    collection.hasAttribute('val')
    Mais cela ne me renvoie rien...

    Est-ce que vous auriez des conseils a me donner pour ouvrir ce genre de xml ? J'ai essayé de voir un peu tous ce que je pouvais sur le web (stack overflow and co), mais cela n'est jamais vraiment clair, et je suis un peu largué. Au depart j'utilisais la fonction matlab xml2struct.m, savez vous si il existe quelque chose de similaire en python?

  2. #2
    Membre chevronné
    Homme Profil pro
    Enseignant
    Inscrit en
    Juin 2013
    Messages
    1 608
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juin 2013
    Messages : 1 608
    Points : 2 072
    Points
    2 072
    Par défaut
    Il y a quelques temps, j'avais fait un truc du genre qui marchait à base de beautifulsoup, je crois.
    Pas d'aide par mp.

  3. #3
    Membre expérimenté Avatar de plxpy
    Homme Profil pro
    Ingénieur géographe
    Inscrit en
    Janvier 2009
    Messages
    792
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 59
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur géographe
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Janvier 2009
    Messages : 792
    Points : 1 481
    Points
    1 481
    Par défaut
    Citation Envoyé par romainmill Voir le message
    Bonjours tous le monde!
    ...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    import xml.etree.ElementTree as ET
    tree = ET.parse('myfile.xml')
    Mais je n'arrive pas du tout a avoir accés aux différentes variables...
    ...
    Tu as vite abandonné !
    La doc est pourtant bien faite et pleine d'exemples.

    Méthode findall avec un Xpath bien senti pour récupérer les éléments puis exploitation de l'attribut attrib, et le tour est joué.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    >>> tree = ET.parse('myfile.xml')
    >>> for node in tree.findall('.//node'):
    ...     print node.attrib
    ... 
    {'y': '-78.9910038674', 'x': '-1.45899321606', 'val': '0.108820054424'}
    {'y': '-78.9910038314', 'x': '-1.46798643212', 'val': '0.110349940564'}
    {'y': '-78.9820077349', 'x': '-1.45899321606', 'val': '0.110600507769'}
    >>>
    "La simplicité ne précède pas la complexité, elle la suit." - Alan J. Perlis
    DVP ? Pensez aux cours et tutos, ainsi qu'à la FAQ !

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Avril 2012
    Messages
    160
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2012
    Messages : 160
    Points : 41
    Points
    41
    Par défaut
    Merci Marco056!

    En effet le module BeautifulSoup est super efficace! J'ai pu extraire les variables facilement depuis 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
     
    from bs4 import BeautifulSoup
    import csv
    import numpy as np
    import pylab as pl
     
    soup = BeautifulSoup (open("myfile.xml"))
     
    Val=[]
    X=[]
    Y=[]
     
    links = soup.find_all('node')
     
    for link in links:
       #print link
       val = link.get('gmv')
       Val.append(float(val))
       x = link.get('x')
       X.append(float(x))
       y = link.get('y')
       Y.append(float(y))
    Du coup je ne sais pas si c'est le plus efficace, mais ca marche!

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

Discussions similaires

  1. [VB6] lecture d'XML
    Par kboo dans le forum VB 6 et antérieur
    Réponses: 8
    Dernier message: 20/04/2006, 09h55
  2. Lecture fichier xml aux caracteres accentués
    Par LFC dans le forum Modules
    Réponses: 2
    Dernier message: 13/02/2006, 19h45
  3. Réponses: 3
    Dernier message: 09/12/2005, 17h42
  4. [SAX] Problème lecture fichier xml
    Par BernardT dans le forum Format d'échange (XML, JSON...)
    Réponses: 3
    Dernier message: 07/07/2005, 18h11
  5. [DOM] Lecture de XML et décision en fonction du contenu
    Par samios dans le forum Format d'échange (XML, JSON...)
    Réponses: 6
    Dernier message: 14/10/2004, 16h09

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