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