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 :

XML par minidom ou elementTree


Sujet :

Python

  1. #1
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut XML par minidom ou elementTree
    Bonjour,

    Je voudrais utiliser XML (pour la première fois..) pour créer une liste,

    Après avoir lu la doc minidom, j'ai fait un programme de récupération comme ceci :

    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
     
    from xml.dom.minidom import parse,parseString
    dom = parseString(
    '''<?xml version="1.0" encoding="UTF-8"?>
    <ElementDocument>
     
    <CONTACT>
    <NOM>MARTIN</NOM>
    <PRENOM>Paul</PRENOM>
    </CONTACT>
     
    <CONTACT>
    <NOM>DUPONT</NOM>
    <PRENOM>Jean</PRENOM>
    </CONTACT>
     
    </ElementDocument>
    ''' )
     
     
    param=["NOM","PRENOM"]
    l=[]
    for i in dom.getElementsByTagName('CONTACT'):
        d={}
        for cle in param:
            d[cle]=i.getElementsByTagName(cle)[0].childNodes[0].data
        l.append(d)
    print l
    # Impression de [{'NOM': u'MARTIN', 'PRENOM': u'Paul'}, {'NOM': u'DUPONT', 'PRENOM': u'Jean'}]
    J'utilise des getElementsByTagName pour être sûr de ce que je récupère.
    Est ce correct ?

    Alex

  2. #2
    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
    Bonsoir, ton code est correcte
    Je te propose une version utilisant elementTree, plus facile à utiliser et présent en standard dans python2.5
    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
    import xml.etree.ElementTree as ET
     
    xml = '''<?xml version="1.0" encoding="UTF-8"?>
    <ElementDocument>
     
    <CONTACT>
    <NOM>MARTIN</NOM>
    <PRENOM>Paul</PRENOM>
    </CONTACT>
     
    <CONTACT>
    <NOM>DUPONT</NOM>
    <PRENOM>Jean</PRENOM>
    </CONTACT>
     
    </ElementDocument>
    ''' 
     
    contacts = []
    params = ['NOM', 'PRENOM']
    for contact in ET.XML(xml).findall('CONTACT'):
    	d = {}
    	for element in contact:	
    		if element.tag in params:
    			d[element.tag] = element.text
    	contacts.append(d)
     
     
    print contacts

  3. #3
    Membre expérimenté Avatar de alexdevl
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    265
    Détails du profil
    Informations personnelles :
    Âge : 56
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 265
    Par défaut Minidom vs elementTree
    C'est vrai que j'ai un peu de mal avec ce type de ligne dans minidom :
    i.getElementsByTagName(cle)[0].childNodes[0].data
    Je l'ai écrit hier et heu...

    les tag et data de ET semblent plus intuitifs pour enchainer des choses comme ceci :
    ET.XML(xml).findall('CONTACT')[0].findall('NOM')[0].text

    Merci de ton aide

    Alex

Discussions similaires

  1. [SAX] Erreur pour trouver la DTD d'un fichier XML parsé!
    Par gdawirs dans le forum Format d'échange (XML, JSON...)
    Réponses: 1
    Dernier message: 14/01/2006, 15h28
  2. [XSD][Java]Valider un XML par rapport a un XSD
    Par sikapoch dans le forum Valider
    Réponses: 11
    Dernier message: 08/11/2005, 15h21
  3. [DOM] Erreur lors du parsing d'un fichier XML par l'API DOM
    Par patricetoan dans le forum Format d'échange (XML, JSON...)
    Réponses: 5
    Dernier message: 26/09/2005, 12h43
  4. Réponses: 12
    Dernier message: 19/05/2005, 14h29
  5. Réponses: 3
    Dernier message: 27/01/2004, 16h15

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