Что является альтернативой этому XPath //div[@id='foo']
в GPath? В общем, где я могу найти эту документацию?
Как найти элемент по значению атрибута в GPath?
Ответ 1
Вот соответствующий фрагмент:
def node = new XmlSlurper().parseText(...)
def foo = node.depthFirst().findAll { it.name() == 'div' && [email protected] == 'foo'}
Несколько других ссылок, которые вы можете прочитать:
Ответ 2
Предыдущий плакат предоставил вам все, что вам нужно: если ваш документ был завален в xml
, вы хотите
def foo = xml.path.to.div.find{[email protected] == 'foo'}
чтобы найти один результат. Или findAll
, чтобы найти все результаты.
Ответ 3
что вам нужно:
def root = new XmlSlurper().parseText(<locOfXmlFileYouAreParsing>.toURL().text)
def foundNode = root.'**'.find{ [email protected] == "foo" }
его двойник *, который позволит вам найти его, не зная пути. По крайней мере, так я это делаю.
Ответ 4
Чтобы подражать выражению //div [@id = 'foo'], самое близкое, что вы можете сделать с помощью GPath:
def xml = new XmlParser().parseText(text)
xml.'**'.div.findAll { [email protected]=="foo" }
"**" в значительной степени совпадает с "//" в вашем XPath.
xml.'**'.div
даст все узлы типа div на любом уровне.
Поздняя фильтрация с помощью findAll() с данным замыканием вы получаете список узлов, как в случае XPath