首页 > 解决方案 > 使用 groovy 迭代 XML

问题描述

我需要遍历 XML 并且只传递 3 个元素,并在下一次迭代中从 4 到 16 中选择下 3 个,依此类推。

我从脚本外部控制计数器的值。

我写了下面的代码,但是它没有按预期工作。

    <employees>
    <details>
        <id>1</id>
    </details>
    <details>
        <id>2</id>
    </details>
    <details>
        <id>3</id>
    </details>
    <details>
        <id>4</id>
    </details>
    <details>
        <id>5</id>
    </details>
    <details>
        <id>6</id>
    </details>
    <details>
        <id>7</id>
    </details>
    <details>
        <id>8</id>
    </details>
</employees>

       def doc = new XmlSlurper().parseText(body);  
       int count = doc.details.size(); 
       def query = "\$filter=FSE_ID eq '";
       int counter = 1; // this value will come from outside the script.
       int counterLimt = counter + 2;
       int i= counter;
       for (i = counter; i <= counterLimt; i++) {
       doc.details[i].CEE_ID.each{
           if(i==counterLimt){
               query = query+it+"'"; 
           }
           else{
           query = query+it+"' or FSE_ID eq '";  
           i++;
           }
       }
       }

预期输出是

第一次运行

$filter=FSE_ID eq '1' 或 FSE_ID eq '2' 或 FSE_ID eq '3'

下一次运行

$filter=FSE_ID eq '4' 或 FSE_ID eq '5' 或 FSE_ID eq '6'

.each 似乎有一些问题,它不像我想象的那样工作。

请帮忙。

谢谢亚坦

标签: groovyiteration

解决方案


我快到了。

通过删除 i++;从 .each 循环内部它可以工作。


推荐阅读