Выражение xpath с атрибутом в элементе дерева python - PullRequest
0 голосов
/ 24 сентября 2019
import xml.etree.ElementTree as ET
tree: ET = ET.parse(file)
tree.find('.//ns1:tag/@someattribute', ns) 

приводит к {KeyError} '@' , насколько мне известно выражение xpath, есть ли способ в дереве элементов получить значение атрибута напрямую, используя xpath и не используя .attrib

1 Ответ

3 голосов
/ 24 сентября 2019

Синтаксически выражение XPath в порядке.Проблема в том, что find() находит только элементы.Его нельзя использовать для поиска атрибутов.

Это должно работать:

attr = tree.find('.//ns1:tag', ns).get('someattribute')

С lxml вы можете использовать метод xpath() (который возвращаетсписок):

attr = tree.xpath('.//ns1:tag/@someattribute', namespaces=ns)[0]
...