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

发布于 2024-10-10 10:13:42 字数 199 浏览 2 评论 0原文

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

例如: ...

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

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

How do I select from a parsed html document a specific element given its index.

For example:
...

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

I want to select the second div but it seems to me GPath doesn't offer a solution like Xpath does.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

转角预定愛 2024-10-17 10:13:42
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 的结构与上面列出的示例相同,但内容不同,您可以始终使用数组索引 1 访问第二个 div:

xml.body.div[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"

You can also use collection type methods on the div node such as .each/.find, for example:

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

EDIT:

To clarify my answer a bit, given HTML in the same structure as the sample I listed above but with various content, you can always access the second div using array index 1:

xml.body.div[1]
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文