un mélange de python et de xml
Répondre à la discussion
Affichage des résultats 1 à 6 sur 6

un mélange de python et de xml



  1. #1
    invite4a2d9efc

    un mélange de python et de xml


    ------

    Bonjour à tous je suis en iut Réseaux et Télécomm et je nage dans l'info depuis le début. En ce moment je travail sur un projet qui consiste à tripoter un fichier xml avec du python. Pourriez vous m'aider s'il vous plait ?

    Voici mon xml :

    Code:
    <biblio>
    <liste_auteurs>
    <auteur id="a1">
    <nom>Dan Brown</nom>
    </auteur>
    <auteur id="a2">
    <nom>Larry Niven</nom>
    </auteur>
    <auteur id="a3">
    <nom>Jerry Pournelle</nom>
    </auteur>
    </liste_auteurs>
    <liste_livres>
    <livre auteurs="a1" isbn10="059305427X" année="2009">
    <titre>The Lost Symbol</titre>
    </livre>
    <livre auteurs="a1" isbn10="1416524797" année="2006">
    <titre>Angels and Demons</titre>
    </livre>
    <livre auteurs="a2 a3" isbn10="076535540X" année="2010">
    <titre>Escape from Hell</titre>
    </livre>
    <livre auteurs="a3" isbn10="1416591613" année="2009">
    <titre>Fires of Freedom</titre>
    </livre>
    </liste_livres>
    </biblio>
    Voyez :

    Larry Niven a écrit Escape from Hell
    Dan Brown a écrit The Lost Symbol et Angels and Demons
    Jerry Pournelle a écrit Escape from Hell et Fires of Freedom


    J'aimerais attribuer à chaque auteur les livres qu'il ont écrit sous le résultat suivant :

    {<Element auteur at 8dc186c>: [],
    <Element auteur at 8dc18cc>: [],
    <Element auteur at 8dc16ac>: []}

    Mon professeur d'info me donne l'exemple de dictionnaire suivant avec le résultat qui le suit :

    Code:
    def collecter_dictionnaire(element0) :
        dico = {}
        for element1 in element0.getiterator() :
            if "id" in element1.attrib :
                dico[element1.attrib["id"]] = element1
        return dico
    résultat :

    {'a1': <Element auteur at 3ee73a0>, 'a3': <Element auteur at 3ee75d0>, 'a2': <Element auteur at 3ee7558>}

    Alors j'ai beau fouiller dans les docs python sur google en anglais et je ne pige pas vraiment ce que veulent dire xxx.getiterator() ainsi que xxx.attrib

    Pourriez-vous m'expliquer s'il vous plait ?

    -----
    Dernière modification par yoda1234 ; 23/11/2011 à 14h12.

  2. #2
    Tryph

    Re : un mélange de python et de xml

    Salut,

    en quelques secondes de recherche google (mots-clés "python attrib" et "python getiterator"), on trouve ces 2 pages entre autres:
    http://docs.python.org/release/3.1.3...ementtree.html
    http://infohost.nmt.edu/tcc/help/pub...titerator.html

    extraits de la première page:
    Element.attrib
    A dictionary containing the element’s attributes. Note that while the attrib value is always a real mutable Python dictionary, an ElementTree implementation may choose to use another internal representation, and create the dictionary only if someone asks for it. To take advantage of such implementations, use the dictionary methods below whenever possible.
    ça s'utilise donc sur un élément xml et ça retourne un dictionnaire contenant les attributs de l'élément associés à leurs valeurs.

    Element.getiterator(tag=None)
    Creates a tree iterator with the current element as the root. The iterator iterates over this element and all elements below it, in document (depth first) order. If tag is not None or '*', only elements whose tag equals tag are returned from the iterator.
    ça s'utilise donc encore sur un élément xml et ça permet de parcourir ses éléments enfants.

    bonne journée

  3. #3
    polo974

    Re : un mélange de python et de xml

    Comme le python sans indentation ce n'est plus du python, il faut utiliser la balise code (le # en édition mode avancé):
    Code:
        exemple indenté
    Jusqu'ici tout va bien...

  4. #4
    yoda1234

    Re : un mélange de python et de xml

    Citation Envoyé par polo974 Voir le message
    Comme le python sans indentation ce n'est plus du python, il faut utiliser la balise code (le # en édition mode avancé):
    C'est fait.
    Là où l'ignorance est un bienfait, c'est de la folie d'être sage (Thomas Gray).

  5. A voir en vidéo sur Futura
  6. #5
    invite4a2d9efc

    Re : un mélange de python et de xml

    Merci beaucoup pour vos conseil =)

    Pourriez-vous si ce n'est pas trop vous demander m'expliquer en détail l'action de cette boucle ?

    for element1 in element0.getiterator() :
    if "id" in element1.attrib :
    dico[element1.attrib["id"]] = element1

    j'ai du mal à assimiler les boucles for, c'est vraiment pas mon truc =(

  7. #6
    polo974

    Re : un mélange de python et de xml

    Et la balise code ...

    Yoda va te tirer les oreilles...

    le for de python, c'est pas le "vieux" for i=1 to 43 du basic de dans le temps...

    c'est un truc qui boucle sur les éléments d'un machin listable (iterable) (en affectant l'élément courant à la variable désignée)...

    ex (AVEC LA BALISE CODE ! ! !):
    Code:
    for i in ('coucou', 13, 'blabla', 3.14159):
        print i
    # le machin est clairement une liste (contenant des éléments divers)
    # i prendra comme valeur (ou référence, attention, c'est un vrai piège à con ! ! !) chacun des éléments de la liste
    
    for k in {1:"un", 2:"deux", 3:"trois"}.iteritems():
        print k
    # k va balayer chaque entrée du dico en rendant un couple (clé, valeur)
    
    for i in range(5):
        print i
    # range revoie une vraie liste donc attention...
    
    for i in xrange(5):
        print i
    #xrange renvoie un objet qu'on peut assimiler à un compteur 
    # (il ne crée pas la liste complète, juste l'élément courant en gros)
    
    for i in xrange(1000000000):
        print i
    # c'est là que ça joue, car avec range, tu exploses ta mémoire... avec xrange, ça mettra "juste" très longtemps...
    et comme le xml, c'est des imbrications de dicos et de listes... le for, ça aide pour les parcourir
    Jusqu'ici tout va bien...

Discussions similaires

  1. Réponses: 3
    Dernier message: 14/10/2011, 02h25
  2. Xml
    Par invitecd05b4fb dans le forum Programmation et langages, Algorithmique
    Réponses: 4
    Dernier message: 24/05/2011, 08h46
  3. normalisation xml
    Par olivier_elec dans le forum Programmation et langages, Algorithmique
    Réponses: 3
    Dernier message: 20/11/2010, 08h50
  4. Langage XML
    Par invitea7fcfc37 dans le forum Internet - Réseau - Sécurité générale
    Réponses: 3
    Dernier message: 15/05/2006, 18h17
  5. xml to xls
    Par vince dans le forum Logiciel - Software - Open Source
    Réponses: 2
    Dernier message: 13/12/2004, 16h16