Итерация XML с использованием Groovy - PullRequest
0 голосов
/ 22 марта 2019

У меня есть требование пройти через XML и пропустить только 3 элемента, а в следующей итерации выбрать следующие 3 из 4 до 16 и т. Д.

Я контролирую значение счетчика вне скрипта.

Я написал приведенный ниже код, однако он не работает должным образом.

    <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 голосов
/ 22 марта 2019

Я был почти там.

путем удаления i ++; внутри цикла .each все работает.

...