Я пытаюсь найти большой XML с помощью библиотеки Python 'lxml'.
Структура XML:
<doc>
<content>
....
<facet myattr="12">
<path>abc</path>
<path>abc</path>
<keyword>
Abcdef ghijk ...
</keyword>
</facet>
<facet myattr="34">
<path>abc</path>
<path>abc</path>
<keyword>
klsjdcsid llssoeo iie ...
</keyword>
</facet>
.....
</content>
</doc>
Я пытаюсь получить значение атрибута "myattr" элемента "facet", где
текстовое значение дочернего элемента «path» - «abc».
Проблема в том, что может быть много элементов "путь", которые могут иметь одинаковое значение "abc"
Итак, когда я пытаюсь это сделать:
from lxml import etree
f='..../mine.xml'
tree = etree.parse(f)
r = tree.xpath('/doc/content.../facet/path[text()=\'abc\']')
sentenceLengths = []
for x in r[:]:
sentenceLengths.append(x.getparent().xpath('@myattr'))
# print(len(r))
print(sentenceLengths[:20])
Он находит нужную мне информацию, но она повторяется для каждого повторения элемента "путь" со значением "abc" для одного и того же элемента "фасет"
Я пытался:
r = tree.xpath('/doc/content.../facet/path[text()=\'abc\'][0]')
Но это не сработало.
Что я делаю не так?