xml – Groovy – 如何退出每个循环?

前端之家收集整理的这篇文章主要介绍了xml – Groovy – 如何退出每个循环?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我是Grails / Groovy的新手,我试图在一个xml文件中找到一个节点;我已经弄清楚如何迭代所有这些,但是当找到目标节点时,我想退出循环。我已经读过,而不是使用“每个”,使用“查找”,但我发现的例子是条件。现在我的逻辑是要遍历整个文件而不退出代码如下:
records.children().each {domain ->
   println "domain_name: " + domain.@domain_name
   if (domain.@domain_name == targetDomain) {

    println "target domain matched: " + domain.@domain_name

    domain.children().each {misc_field ->

     println "field_name: " + misc_field.@field_name
     println "field_type: " + misc_field.@field_type
     println "field_value: " + misc_field

    }



   }
  }
你不能优雅地做。你可能会看到有些人建议抛出异常,但这只是 plain ugly

这里有一些mailing list discussion关于使用每个对于,而一对夫妇则表示,因为每个人都无法从迭代中脱颖而出。

你最好的打赌可能是转换为for循环并迭代:

for(def domain : records.children()) { // this may need some tweaking depending on types
    // do stuff
    if(condition) {
        break;
    }
}

或者,就像你说的,也许使用findfindAll找到你要找的元素(以下代码是释义的,我还没有时间来测试):

def result = records.children().find { domain -> domain.@domain_name == targetDomain }
result.children().each {
    // print stuff
}

相关问题:

> best-pattern-for-simulating-continue-in-groovy-closure
> is-it-possible-to-break-out-of-closure-in-groovy

猜你在找的XML相关文章