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 ligne par ligne


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut parser un fichier XML ligne par ligne
    Bonjour
    j'ai un fichier xml
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    <?xml version="1.0" encoding="UTF-8"?>
    <livre>
    	<Information>	
    		<newLivre nom="livre1" date=132>
    		<newLivre nom="livre2" date=133>
    	</Information>
     
    	<auteur>
    		<infoAuteur nom="auteur1" date=1960>
    		<infoAuteur nom="auteur2" date=1970>	
    	<auteur>
    </livre>
    j'aimerais le parser pour afficher juste les informations (livre1, livre 2 et les date et les noms des auteurs
    j'ai ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def lireFichier(path):
            fichier = open("C:\fichier.xml")
            ligne = fichier.readline()
            ligne = ligne.strip()
            print ligne
            #return ligne
            fichier.close()
    mais en appelant la fonction , j'ai que la première ligne qui s'affiche <?xml version="1.0" encoding="UTF-8"?>
    vous avez une idée ?

  2. #2
    Membre très actif
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Par défaut
    a mon avis, il faut plutôt utiliser les modules pour parser des fichier xml, et a mon avis ya meme des tutoriels sur sa,

  3. #3
    Membre très actif
    Homme Profil pro
    dev
    Inscrit en
    Avril 2011
    Messages
    174
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : dev
    Secteur : Industrie

    Informations forums :
    Inscription : Avril 2011
    Messages : 174
    Par défaut
    http://quilovnic.developpez.com/pythondom/

    Voici un bon document pour sa, vous devez trouver se que vous cherchez

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    merci j'ai vu cet exemple
    mais on n'affiche qu'un seul nom dans l'exemple , on peut pas afficher tous les noms (durant , dupont etc )

  5. #5
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 744
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 744
    Par défaut
    Salut,

    Citation Envoyé par nancy maman Voir le message
    merci j'ai vu cet exemple
    mais on n'affiche qu'un seul nom dans l'exemple , on peut pas afficher tous les noms (durant , dupont etc )
    Il faut penser "arbre":
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    	<Information>	
    		<newLivre nom="livre1" date=132>
    		<newLivre nom="livre2" date=133>
    	</Information>
    Information a pour fils deux éléments de type newLivre qui ont pour attributs...
    Côté code, l'API la plus sympa serait:
    tree = lecture du fichier,
    for node in tree:
    for e in node:
    Et c'est ce que proposent LXML ou elementtree.
    Cordialement
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Février 2011
    Messages
    297
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2011
    Messages : 297
    Par défaut
    j'ai testé ce code :
    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
     
     
    document = """\
    <quil>
     
        <personne>
     
            <nomPrenom nom="Durant" prenom="Stephan">
            </nomPrenom>
            <nomPrenom nom="a" prenom="b">
            </nomPrenom>
     
        </personne>
        
        <personne>
     
            <nomPrenom nom="d" prenom="e">
            </nomPrenom>
            <nomPrenom nom="f" prenom="g">
            </nomPrenom>
     
        </personne>
     
        
     
    </quil>
    """
     
    from xml.dom import minidom                                          
    dom = minidom.parseString(document)
     
    def getText(nodelist):
        rc = ""
        for node in nodelist:
            if node.nodeType == node.TEXT_NODE:
                rc = rc + node.data
        return rc
     
    def handleSlideshow(quil):
     
        racines = quil.getElementsByTagName("personne")
        handleSlides(racines)
     
     
    def handleSlides(racines):
        for personne in racines:
            handleSlide(personne)
     
    def handleSlide(personne):
        handleNom(personne.getElementsByTagName("nomPrenom")[0])
     
     
    def handleNom(nom):
        print  "nom : "+getText(nom.childNodes)
     
    def handlePrenom(personnes):
     
        for prenom in personnes:
            print "prenom : "+getText(prenom.childNodes)
     
     
     
     
    handleSlideshow(dom)
    mais il me renvoie rien comme résultat

Discussions similaires

  1. Parser un fichier xml sur une ligne
    Par lokomass dans le forum Shell et commandes GNU
    Réponses: 1
    Dernier message: 27/02/2015, 17h37
  2. [DOM] Parser un fichier xml (sans espaces et retours à la ligne)
    Par rizki1 dans le forum Format d'échange (XML, JSON...)
    Réponses: 7
    Dernier message: 04/05/2010, 10h26
  3. [debutant]lecture fichier ligne par ligne
    Par Battosaiii dans le forum C
    Réponses: 2
    Dernier message: 13/11/2005, 19h02
  4. lire un fichier ligne par ligne
    Par peuf23 dans le forum C
    Réponses: 6
    Dernier message: 21/09/2005, 10h43

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