API немного странный, но я думаю, что есть пара лучших способов поиска детей. Когда вы запрашиваете «xml.bar» (который существует) или «xml.quux», которого нет, вы получаете объект groovy.util.slurpersupport.NodeChildren . В основном это набор узлов, отвечающих заданным вами критериям.
Один из способов проверить, существует ли конкретный узел, - это проверить размер NodeChildren на ожидаемый размер:
def text = "<foo><bar/></foo>"
def xml = new XmlSlurper().parseText(text)
assert 1 == xml.bar.size()
assert 0 == xml.quux.size()
Другим способом было бы использовать метод find и посмотреть, является ли ожидаемое имя возвращаемого узла (к сожалению, что-то всегда возвращается):
def text = "<foo><bar/></foo>"
def xml = new XmlSlurper().parseText(text)
assert ("bar" == xml.children().find( {it.name() == "bar"})?.name())
assert ("quux" != xml.children().find( {it.name() == "quux"})?.name())