如何在GPath中通过属性值查找元素?

发布于 2024-11-29 00:38:22 字数 77 浏览 2 评论 0原文

GPath 中 XPath //div[@id='foo'] 的替代方案是什么?一般来说,我可以在哪里找到此文档?

What is an alternative to this XPath //div[@id='foo'] in GPath? In general, where I can find this documentation?

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

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

发布评论

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

评论(4

把回忆走一遍 2024-12-06 00:38:22

以下是相应的片段:

def node = new XmlSlurper().parseText(...)
def foo = node.depthFirst().findAll { it.name() == 'div' && it.@id == 'foo'}

您可能需要阅读的其他一些链接:

Here is the corresponding snippet:

def node = new XmlSlurper().parseText(...)
def foo = node.depthFirst().findAll { it.name() == 'div' && it.@id == 'foo'}

A few other links you may want to read:

冰雪之触 2024-12-06 00:38:22

上一张海报为您提供了所需的一切:假设您的文档已被放入 xml 中,您希望

def foo = xml.path.to.div.find{it.@id == 'foo'}

找到一个结果。或者 findAll 查找所有结果。

The previous poster gave you all that's required: Assuming your document has been slurped into xml, you want

def foo = xml.path.to.div.find{it.@id == 'foo'}

to find a single result. Or findAll to find all results.

星光不落少年眉 2024-12-06 00:38:22

为了模仿表达式 //div[@id='foo'],您可以使用 GPath 做的最接近的事情是:

def xml = new XmlParser().parseText(text)
xml.'**'.div.findAll { it.@id=="foo" }

“**”与 XPath 中的“//”几乎相同。

xml.'**'.div

将产生任何级别的 div 类型的所有节点。

稍后使用给定闭包的 findAll() 进行过滤,您将获得节点列表,就像在 XPath 情况下一样

To mimic the expression //div[@id='foo'] the closest thing you can do with a GPath is:

def xml = new XmlParser().parseText(text)
xml.'**'.div.findAll { it.@id=="foo" }

the '**' is pretty much the same as '//' in your XPath.

xml.'**'.div

will yield all the nodes of type div at any level.

Later filtering with findAll() with the given closure you get a list of nodes as you do in the XPath case

苄①跕圉湢 2024-12-06 00:38:22

你需要的是这样的:

def root = new XmlSlurper().parseText(<locOfXmlFileYouAreParsing>.toURL().text)

def foundNode = root.'**'.find{ it.@id == "foo" }

它的双*可以让你在不知道路径的情况下找到它。至少我是这样做的。

what you need is this:

def root = new XmlSlurper().parseText(<locOfXmlFileYouAreParsing>.toURL().text)

def foundNode = root.'**'.find{ it.@id == "foo" }

its the double * that will let you find it without knowing the path. At least this is how I do it.

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