使用Groovy迭代XML

时间:2019-03-22 02:54:27

标签: groovy iteration

我需要遍历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似乎存在一些问题,并且按我的想法无法正常工作。

请帮助。

谢谢 亚坦

1 个答案:

答案 0 :(得分:0)

我快到了。

通过删除i ++;从.each循环内部开始工作。