Python — Библиотека ElementTree — Поиск по дереву по значению атрибута

#python #xml #parsing #elementtree

#python #xml #синтаксический анализ #elementtree

Вопрос:

Я установил библиотеку ElementTree отсюда:http://effbot.org/zone/element.htm в python 2.7.

Я проанализировал XML-файл:

 tree_a=parse('/home/user/cookies.xml')
  

Вопрос, который возникает сейчас, и где я не смог извлечь информацию из документации effbot ElementTree:

Как я могу получить доступ к узлу из xml-дерева, вызвав его по значению атрибута?

что-то вроде

 tree_a.getNode(my_attribute,my_attribute_value)
  

в примере:

 tree_a.getNode(cookie_diameter, 12)
  

таким образом, этот запрос вернет узел из xml-дерева, который имеет в качестве атрибута cookie_diameter значение 12

Существует ли встроенная функция?

С наилучшими пожеланиями

Даниял

Комментарии:

1. @poke упоминает об этом. Я хотел бы повторить ElementTree является частью Python stdlib начиная с Python 2.5.

Ответ №1:

ElementTree имеет ограниченную поддержку XPath. Хотя он не поддерживает все, некоторые более продвинутые вещи работают. Вы можете запрашивать значения атрибутов с помощью ElementTree 1.3 (встроенного в Python 2.7 и Python 3.2 ) следующим образом:

 tree.find( './/*[@cookie_diameter="12"]' )
  

Для полной поддержки XPath смотрите документацию по effbot.org .

Комментарии:

1. Отличный ответ. Я не вижу ничего, что можно было бы добавить.