groovy - 使用 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 似乎有一些问题,它不像我想象的那样工作。
请帮忙。
谢谢亚坦
解决方案
我快到了。
通过删除 i++;从 .each 循环内部它可以工作。
推荐阅读
- java - 当我有“无法扫描[...]”警告时,如何在我的 Spring Boot 应用程序中处理 JAR 扫描?
- selenium - 如何跳过在量角器中为特定浏览器执行的测试用例文件
- rest - 为什么 Swagger 将 GET 请求标记为重复映射 ke?
- php - 我可以在同一个 $array 上多次使用 explode() 吗?
- selenium - 无法点击菜单链接
- javascript - InDesign CC2019 扩展 - Chromium 显示“警告临时标头已显示”消息
- javascript - Plotly.js:当我使用 plotly_click 事件时点击错误 [JS]
- c# - 如何在asp.net中填充选定的下拉值
- java - 输入未转换为字符串?
- regex - How to find and replace space between digits in a string column?