Comment extraire l'attribut xml en utilisant Python ElementTree

Pour:

<foo>
 <bar key="value">text</bar>
</foo>

Comment puis-je obtenir "valeur"?

xml.findtext("./bar[@key]")

lance une erreur.

23
demandé sur Will Curran 2011-01-01 08:16:21

3 réponses

ceci trouvera la première instance d'un élément nommé bar et renvoie la valeur de l'attribut key.

In [52]: import xml.etree.ElementTree as ET

In [53]: xml=ET.fromstring(contents)

In [54]: xml.find('./bar').attrib['key']
Out[54]: 'value'
34
répondu unutbu 2018-02-05 21:49:53

votre expression:

./bar [@]

cela signifie:bar enfants key l'attribut

si vous voulez sélectionner l'attribut, utilisez cette expression relative:

bar/@key

cela signifie:key l'attribut bar enfants

bien sûr, vous devez envisager d'utiliser pleinement conforme XPath moteur, comme lxml.

1
répondu PashaPash 2016-07-26 17:44:44

Getting child tag attribut value in a XML using ElementTree

analysez le fichier XML et obtenez le root balise, puis à l'aide de [0] va nous donner la première balise enfant. De même [1], [2] nous donne les tags enfants suivants. Après avoir obtenu enfant tag utiliser .attrib[attribute_name] pour obtenir la valeur de l'attribut.

>>> import xml.etree.ElementTree as ET
>>> xmlstr = '<foo><bar key="value">text</bar></foo>'
>>> root = ET.fromstring(xmlstr)
>>> root.tag
'foo'
>>> root[0].tag
'bar'
>>> root[0].attrib['key']
'value'

si le contenu xml est dans le fichier. Vous devriez faire la tâche ci-dessous pour obtenir le root.

>>> tree = ET.parse('file.xml')
>>> root = tree.getroot()
1
répondu rashok 2018-04-26 14:25:57