Мне нужен запрос GPath для выбора узла с использованием числового индекса

Как выбрать из проанализированного html-документа определенный элемент с учетом его индекса.

Например: ...

<div>div1</div>
<div>div2</div>

Я хочу выбрать второй div, но мне кажется, что GPath не предлагает такого решения, как Xpath.


person SomeEUGuy    schedule 06.01.2011    source источник


Ответы (1)


def html = """
<html>
  <head>
    <title>test</title>
  </head>
  <body>
    <div>div1</div>
    <div>div2</div>
  </body>
</html>"""

def xml = new XmlSlurper().parseText(html)

assert xml.body.div[0].text() == "div1"
assert xml.body.div[1].text() == "div2"

Вы также можете использовать методы типа коллекции на узле div, такие как .each/.find, например:

xml.body.div.find { it.text() == "div2" }

РЕДАКТИРОВАТЬ:

Чтобы немного пояснить мой ответ, учитывая HTML в той же структуре, что и пример, который я перечислил выше, но с различным содержимым, вы всегда можете получить доступ ко второму div, используя индекс массива 1:

xml.body.div[1]
person John Wagenleitner    schedule 06.01.2011
comment
я не знаю содержимого div, но я знаю, что важная для меня информация находится во втором ... - person SomeEUGuy; 06.01.2011
comment
Я отредактировал свой ответ, чтобы немного уточнить его. Утверждения были просто там, чтобы показать, к какому контенту он обращался. Использование div[1] должно дать вам второй узел div. - person John Wagenleitner; 06.01.2011