У меня есть XML-файл со структурой, как показано ниже:XPath и LXML синтаксис
<x>
<y/>
<y/>
.
.
</x>
Количество <y>
тегов произвольны.
Я хочу получить текст тегов <y>
, и для этого я решил использовать XPath. Я понял, синтаксис, скажем, для первого y
: (Предположим, что root
как x
)
textFirst = root.xpath('y[1]/text()')
Это работает, как ожидалось.
Однако моя проблема заключается в том, что я не буду знать число <y>
тегов заранее, так, чтобы исправить это, я сделал это:
>>> count = 0
>>> for number in root.getiterator('y'):
... count += 1
Так что теперь я знаю, что есть count
количество y
в x
. (Есть ли лучший способ получить количество тегов Если да, пожалуйста, предложите?)
Однако, если я делаю это:
>>> def try_it(x):
... return root.xpath('y[x]/text()')
...
>>> try_it(1)
[]
возвращает пустой список.
Так что мой вопрос: не знать произвольное количество тегов, как получить синтаксис или выражение XPath для него и использовать lxml
?
Извините, если что-то неясно, я постарался изо всех сил, чтобы объяснить проблему.
Ohhhhhhh! Оно работает! Огромное спасибо. Очень глупо от меня. Является ли мой метод получения числа 'y' тегов ОК или есть более короткая версия? – user225312
PulpFiction: это случается :) Я обновил ответ с подсказкой на более простом способе, как это сделать проще – mykhal
mykhal: Спасибо за помощь, вы спасли мне много хлопот. Хорошего дня! :) – user225312