加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-16 08:04:09 所属栏目:百科 来源:网络整理
导读:我是Grails / Groovy的新手,我试图在一个xml文件中找到一个节点;我已经弄清楚如何迭代所有这些,但是当找到目标节点时,我想退出循环。我已经读过,而不是使用“每个”,使用“查找”,但我发现的例子是条件。现在我的逻辑是要遍历整个文件而不退出。代码如
我是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;
    }
}

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

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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读