#groovy #iteration
#groovy #итерация
Вопрос:
У меня есть требование выполнять цикл по XML и передавать только 3 элемента, а на следующей итерации выбирать следующие 3 из 4-16 и так далее.
Я контролирую значение counter извне скрипта.
Я написал приведенный ниже код, однако он работает не так, как ожидалось.
<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’
кажется, есть какая-то проблема с .каждый и это работает не так, как я думал.
Пожалуйста, помогите.
Спасибо, Ятан
Ответ №1:
Я был почти на месте.
удалив i ; изнутри .в каждом цикле это работает.