我需要一个GPath查询来使用数字索引选择一个节点

Som*_*Guy 4 groovy xml-parsing gpath

如何从已解析的html文档中选择给定其索引的特定元素.

例如: ...

<div>div1</div>
<div>div2</div>
Run Code Online (Sandbox Code Playgroud)

我想选择第二个,div但在我看来GPath不提供像Xpath那样的解决方案.

Joh*_*ner 7

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"
Run Code Online (Sandbox Code Playgroud)

您还可以在div节点上使用集合类型方法,例如.each/.find,例如:

xml.body.div.find { it.text() == "div2" }
Run Code Online (Sandbox Code Playgroud)

编辑:

为了澄清我的答案,给定HTML与上面列出的示例结构相同,但具有各种内容,您始终可以使用数组索引1访问第二个div:

xml.body.div[1]
Run Code Online (Sandbox Code Playgroud)