Мне нужно написать динамическую функцию, которая находит элементы в поддереве XML-документа ATOM.
Для этого я написал что-то вроде этого:
tree = etree.parse(xmlFileUrl)
e = etree.XPathEvaluator(tree, namespaces={'def':'http://www.w3.org/2005/Atom'})
entries = e('//def:entry')
for entry in entries:
mypath = tree.getpath(entry) + "/category"
category = e(mypath)
Приведенный выше код не может найти категорию.
Причина в том, что getpath возвращает XPath без пространств имен, тогда как XPathEvaluator e() требует пространств имен.
Есть ли способ либо заставить getpath возвращать пространства имен в пути, либо разрешить XPathEvaluator принимать путь без указания пространства имен (или, скорее, указав его каким-то другим способом)?