[Accueil] - [Plan du site] - [Rechercher] - [ C O L R T S P ]  

 
ElementTree : accéder aux attributs comme aux sous-éléments
 

par nojhan le 28 février 2008

En XML, j’aime bien considérer les attributs comme des sous-éléments de chaque noeud, je trouve ça plus logique et élégant.

Seulement, avec le module ElementTree, il n’est pas possible d’utiliser la même syntaxe XPath pour accéder aux uns et aux autres.

Un moyen simple pour avoir le contenu d’un élément est d’utiliser findtext, mais ça ne fonctionne pas sur les attributs.

Pour avoir accès aux attributs simplement, il faut ruser un peu en utilisant la méthode items sur un objet élément.

Au final, j’utilise une fonction qui prend une requête XPath sous la forme d’une liste, dont le dernier élément est l’attribut à récupérer :


# les premiers éléments sont considérés comme des noeuds de la requête xpath
q = '//' + '/'.join( ns[0:-1] )
# le dernier est l'attribut
attribute = ns[-1]

# on récupère l'objet élément
el = tree.find( q)

# les attributs sont récupérables dans une liste de tuples (!)
# on convertit donc en dictionnaire, plus logique
attr = dict( el.items() )

# ce qui permet de récupérer le contenu directement avec l'identifiant
res = unicode( attr[attribute] )


Commentaires

Articles populaires

[Accueil] - [Plan du site] - [Rechercher] - [Admin.]       SPIP:Squelette