Повторение XML с использованием groovy

#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 ; изнутри .в каждом цикле это работает.