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.
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'
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.
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()