I\'m new to Grails/Groovy and am trying to find a node in a an xml file; I\'ve figured out how to iterate over all of them, but I want to exit the loop when the target node is f
You cannot do it elegantly. You might see some people suggest throwing an Exception, but that's just plain ugly.
Here's some mailing list discussion on using each
vs. for
, and a couple people say that for
is preferred because of each
's inability to break from the iteration.
Your best bet is probably to change over to a for
loop and iterate:
for(def domain : records.children()) { // this may need some tweaking depending on types
// do stuff
if(condition) {
break;
}
}
Either that, or like you said, maybe use find or findAll to find the element you're looking for (the following code is paraphrased, I don't have time yet to test it out):
def result = records.children().find { domain -> domain.@domain_name == targetDomain }
result.children().each {
// print stuff
}
Related SO questions: