通过Groovy脚本阅读HTML文件

pkbketx9  于 2022-12-11  发布在  其他
关注(0)|答案(1)|浏览(172)

我需要使用Groovy编写Jenkins管道脚本,其中下面的HTML是输入

<table style="width:30%">
 <TR> 
 <TD>Failed A Count</TD>
 <TD>2869</TD>
 </TR>
 <TR> 
 <TD>Failed B Count</TD>
 <TD>9948</TD>
 </TR>
 <TR> 
 <TD>Failed C Count</TD>
 <TD>3456</TD>
 </TR></table>

我是从RestAPI获取的,如果任何值大于100,我需要触发电子邮件。

def response = httpRequest 'REST_API_URI'
println("Status: "+response.status)
def responseBody =  response.content
String[] TDcollection;
String[] splitData = responseBody.split("\n");
for (String eachSplit : splitData) {
  if (eachSplit.contains("Failed")) {
    print(eachSplit);
    }
  }

我已经尝试过了,但无法获得值并验证它。
这似乎很容易,但我很
我是Groovy的新手,我有点被它卡住了。提前感谢。

vaqhlq81

vaqhlq811#

无需动脑的groovy:

String input = '''\
<table style="width:30%">
 <TR>
 <TD>Failed A Count</TD>
 <TD>2869</TD>
 </TR>
 <TR>
 <TD>Failed B Count</TD>
 <TD>9948</TD>
 </TR>
 <TR>
 <TD>Failed B Count</TD>
 <TD>10000</TD>
 </TR>
 <TR>
 <TD>Failed C Count</TD>
 <TD>3456</TD>
 </TR></table>'''

Map<String,Integer> failedValues = [:].withDefault{ 0 }
input.eachMatch( /<TD>Failed (\w+) Count<\/TD>\s*<TD>(\d+)<\/TD>/ ){ _, name, count -> failedValues[ name ] += count.toInteger() }

assert failedValues == [A:2869, B:19948, C:3456]

boolean errorOccured = failedValues.any{ 100 <= it.value }

assert errorOccured

还要注意对相同“名称”的计数求和。

相关问题