//div[@id='foo']
GPath中这个 XPath 的替代方法是什么?一般来说,我在哪里可以找到这个文档?
问问题
22488 次
4 回答
30
这是相应的片段:
def node = new XmlSlurper().parseText(...)
def foo = node.depthFirst().findAll { it.name() == 'div' && it.@id == 'foo'}
您可能想阅读的其他一些链接:
于 2011-08-11T04:55:34.470 回答
9
上一张海报为您提供了所需的一切:假设您的文档已被吞入xml
,您想要
def foo = xml.path.to.div.find{it.@id == 'foo'}
找到一个结果。或findAll
查找所有结果。
于 2011-08-11T08:53:25.470 回答
3
为了模仿表达式 //div[@id='foo'] ,你可以用 GPath 做的最接近的事情是:
def xml = new XmlParser().parseText(text)
xml.'**'.div.findAll { it.@id=="foo" }
'**' 与 XPath 中的 '//' 几乎相同。
xml.'**'.div
将产生任何级别的所有 div 类型的节点。
稍后使用给定闭包使用 findAll() 进行过滤,您将获得一个节点列表,就像在 XPath 案例中所做的那样
于 2015-04-24T14:58:41.863 回答
1
你需要的是这样的:
def root = new XmlSlurper().parseText(<locOfXmlFileYouAreParsing>.toURL().text)
def foundNode = root.'**'.find{ it.@id == "foo" }
它的双 * 会让你在不知道路径的情况下找到它。至少我是这样做的。
于 2012-01-08T22:20:40.220 回答