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 :

parser un fichier xml


Sujet :

Python

  1. #1
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par défaut parser un fichier xml
    je veux afficher le contenu d'un fichier xml mais j'arrive pas je sais que c simple mais bon moi je suis mauvais

    mon 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
    <data>
    <item code = '123'>
    <price>111
    <prix>a1</prix>
    <prix>b1</prix>
     
    </price>
    <price>222
    <prix>a2</prix>
    <prix>b2</prix>
     
     
    </price>
    <price>333
    <prix>a3</prix>
    <prix>b3</prix>
     
    </price>
    </item>
     
    <item code = '456'>
    <price>444
    <prix>456</prix>
    </price>
    </item>
    </data>
    je veux afficher :
    111:
    a1
    b1

    222:
    a2
    b2

    333:
    a3
    b3

    444:
    456



    j'ai essayé de faire ça mais ça marche pas c just un debut mais je connais pas tte les methode c pour ça:

    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
    from xml.dom import minidom
     
    docXML = minidom.parse('monfichier.xml')
    for node in docXML.getElementsByTagName('item'):
    # Je recupere la valeur de l'attribut
    if node.getAttribute('code') == '123':
     
    #print node.getElementsByTagName('price')
    n_price= node.getElementsByTagName('price')[0]
    print "le premier est " + n_price.firstChild.data
    k=0
    for i in n_price.childNodes:
    j= n_price.getElementsByTagName('prix')[k]
    print j.firstChild.data
    k=k+1
     
    else :
    n_price= node.getElementsByTagName('price')[0]
    print "le deuxieme est " + n_price.firstChild.data
    please help me

  2. #2
    Expert confirmé
    Avatar de fred1599
    Homme Profil pro
    Lead Dev Python
    Inscrit en
    Juillet 2006
    Messages
    4 060
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Meurthe et Moselle (Lorraine)

    Informations professionnelles :
    Activité : Lead Dev Python
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2006
    Messages : 4 060
    Par défaut
    Bon je ne sais pas ce que les autres feraient, mais je trouve que c'est un bon cas pour utiliser le module re et les expressions régulières.

    Je verrais si j'ai le temps de te faire un truc là-dessus.

    Un résultat de ce genre ne te conviendrait pas ?

    ['123', '111', '222', '333', '456', '444', '456']
    ['a1', 'a2', 'a3']
    ['b1', 'b2', 'b3']

  3. #3
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par défaut
    non en faite il faut que je les recuperer comme l'exemple en haut afin de les inserer dans un html

  4. #4
    Expert confirmé
    Avatar de tyrtamos
    Homme Profil pro
    Retraité
    Inscrit en
    Décembre 2007
    Messages
    4 486
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Décembre 2007
    Messages : 4 486
    Billets dans le blog
    6
    Par défaut
    Bonjour,

    Je ne connais pas assez le sujet pour t'aider, mais il y a un exemple dans la doc:

    http://docs.python.org/library/xml.d...ml#dom-example

    Par ailleurs, corrige ton message: le code Python doit absolument se trouver entre 2 tags insérés par le "#" au dessus de la fenêtre. Un code Python sans son indentation est inexploitable.

    Tyrtamos

  5. #5
    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
    en utilisant ElementTree, tu peux facilement obtenir ce que tu veux:
    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
     
    data = """<data>
    <item code = '123'>
    <price>111
    <prix>a1</prix>
    <prix>b1</prix>
     
     </price>
     <price>222
     <prix>a2</prix>
     <prix>b2</prix>
      
       
       </price>
       <price>333
       <prix>a3</prix>
       <prix>b3</prix>
        
        </price>
        </item>
         
         <item code = '456'>
         <price>444
         <prix>456</prix>
         </price>
         </item>
         </data>
          """
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    from xml.etree import ElementTree as ET
    root =ET.fromstring(data)
    for item in root.findall('item'):
        for price in item.findall('price'):
            if price.text:
                print "%s:" % price.text.strip()
            for prix in price.findall('prix'):
                print prix.text
            print
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    111:
    a1
    b1
     
    222:
    a2
    b2
     
    333:
    a3
    b3
     
    444:
    456

  6. #6
    Futur Membre du Club
    Profil pro
    Étudiant
    Inscrit en
    Avril 2006
    Messages
    3
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2006
    Messages : 3
    Par défaut
    Merci ça me conviens

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

Discussions similaires

  1. problème pour parser un fichier xml avec XML::Simple
    Par black_code dans le forum Modules
    Réponses: 3
    Dernier message: 30/01/2006, 19h32
  2. [xslt] Parser 2 fichiers XML
    Par malekms dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 30/12/2005, 12h22
  3. Parser un fichier XML
    Par Charlinecha dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 11/07/2005, 17h18
  4. [SAX] parser un fichier xml en Java
    Par royou dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 10/02/2005, 17h12
  5. parser des fichier .xml en perl
    Par djibril dans le forum Modules
    Réponses: 13
    Dernier message: 18/05/2004, 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