static def isElementExists (String xmlStr, Closure closure){
def xml = new XmlSlurper().parseText(xmlStr)
def elements = closure(xml)
elements.size() ? true : false
}
def xmlString = '''<root> <persons> <person gender="female">X</person> <person gender="female">Y</person> <person gender="male">Z</person> </persons> </root>'''
println isElementExists(xmlString) {x -> x.'**'.findAll { it.name()=='person' && it.@gender == 'male' } }
println isElementExists(xmlString) {x -> x.persons.person }
//Below two statements is same as above statement
def locator = {x -> x.persons.person }
println isElementExists(xmlString, locator)
c3RhdGljIGRlZiBpc0VsZW1lbnRFeGlzdHMgKFN0cmluZyB4bWxTdHIsIENsb3N1cmUgY2xvc3VyZSl7CiAgICBkZWYgeG1sID0gbmV3IFhtbFNsdXJwZXIoKS5wYXJzZVRleHQoeG1sU3RyKQogICAgZGVmIGVsZW1lbnRzID0gY2xvc3VyZSh4bWwpCiAgICBlbGVtZW50cy5zaXplKCkgPyB0cnVlIDogZmFsc2UgICAgCn0KCmRlZiB4bWxTdHJpbmcgPSAnJyc8cm9vdD4gICAgICAgICA8cGVyc29ucz4gICAgICAgICAgICAgPHBlcnNvbiBnZW5kZXI9ImZlbWFsZSI+WDwvcGVyc29uPiAgICAgICAgICAgICA8cGVyc29uIGdlbmRlcj0iZmVtYWxlIj5ZPC9wZXJzb24+ICAgICAgICAgICAgIDxwZXJzb24gZ2VuZGVyPSJtYWxlIj5aPC9wZXJzb24+ICAgICAgICAgPC9wZXJzb25zPiAgICAgPC9yb290PicnJwoKcHJpbnRsbiBpc0VsZW1lbnRFeGlzdHMoeG1sU3RyaW5nKSB7eCAtPiB4LicqKicuZmluZEFsbCB7IGl0Lm5hbWUoKT09J3BlcnNvbicgJiYgaXQuQGdlbmRlciA9PSAnbWFsZScgfSB9CgpwcmludGxuIGlzRWxlbWVudEV4aXN0cyh4bWxTdHJpbmcpIHt4IC0+IHgucGVyc29ucy5wZXJzb24gfQoKLy9CZWxvdyB0d28gc3RhdGVtZW50cyBpcyBzYW1lIGFzIGFib3ZlIHN0YXRlbWVudAoKZGVmIGxvY2F0b3IgPSB7eCAtPiB4LnBlcnNvbnMucGVyc29uIH0KcHJpbnRsbiBpc0VsZW1lbnRFeGlzdHMoeG1sU3RyaW5nLCBsb2NhdG9yKQ==