Мне нужен запрос GPath, чтобы выбрать узел, используя числовой индекс - PullRequest
4 голосов
/ 06 января 2011

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

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

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

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

1 Ответ

7 голосов
/ 06 января 2011
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" }

EDIT:

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

xml.body.div[1]
...