Obtenir la liste des valeurs d'attributs XML en Python
J'ai besoin d'obtenir une liste de valeurs d'attribut à partir d'éléments d'enfant en Python.
Il est plus facile à expliquer avec un exemple.
Donné un peu de XML comme ceci:
<elements>
<parent name="CategoryA">
<child value="a1"/>
<child value="a2"/>
<child value="a3"/>
</parent>
<parent name="CategoryB">
<child value="b1"/>
<child value="b2"/>
<child value="b3"/>
</parent>
</elements>
Je veux être en mesure de faire quelque chose comme:
>>> getValues("CategoryA")
['a1', 'a2', 'a3']
>>> getValues("CategoryB")
['b1', 'b2', 'b3']
Il ressemble à un travail de XPath, mais je suis ouvert à toutes les recommandations. J'aimerais aussi vous entendre parler de vos favoris Python XML bibliothèques.
source d'informationauteur roomaroo
Vous devez vous connecter pour publier un commentaire.
Je ne suis pas vraiment une vieille main en Python, mais voici une solution à l'aide de XPath libxml2.
Avec un résultat...
ElementTree 1.3 (malheureusement pas 1.2 qui est celui qui est fourni avec Python) prend en charge XPath comme ceci:
Ensuite, vous pouvez faire
lxml.etree
(qui fournit également le ElementTree interface) travaillera de la même façon.À l'aide d'un standard W3 DOM comme la stdlib de minidom, ou pxdom:
Je dois avouer que je suis un fan de xmltramp en raison de sa facilité d'utilisation.
Accès à la ci-dessus devient:
Vous pouvez faire cela avec BeautifulSoup
Si vous êtes en train de faire le travail avec HTML/XML, je vous recommande de prendre un coup d'oeil à BeautifulSoup. Il est semblable à l'arbre du DOM, mais il contient plus de fonctionnalités.
Mon préféré python bibliothèque xml est lxml , qui s'enroule libxml2.
Xpath ne semble pas la voie à suivre ici, alors j'aimerais écrire ce que quelque chose comme:
En Python 3.x, la récupération d'une liste d'attributs est une tâche simple d'utilisation, le membre
items()
À l'aide de la
ElementTree
ci-dessous montre l'extrait de code un moyen d'obtenir la liste des attributs.NOTEZ que cet exemple ne tient pas compte des espaces de noms, qui devront être pris en compte.
RÉFÉRENCE:
Python manuel