22

//div[@id='foo']GPathでこのXPathに代わるものは何ですか?一般的に、このドキュメントはどこにありますか?

4

4 に答える 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 のすべてのノードを生成します。

XPath の場合と同様に、指定されたクロージャで findAll() を使用して後でフィルタリングすると、ノードのリストが取得されます。

于 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 に答える