groovy 读取html文件,「Groovy」- 操作 HTML 文档 @20210307

问题描述在 Jenkins Pipeline 中,我们需要对 HTML 文档进行多种操作。之前使用 XMLParser 及 XMLSlurper 库操作 HTML 文档时遇到很多问题,因为 HTML 文档结构松散(比如没有结束标签等等),不是标准的 XML 文件,因此导致 XML 解析失败。该笔记将整理:在 Groovy 中,操作 HTML 文档的常用方法解决方案方案一、使用 Jsoup 类库方案...
摘要由CSDN通过智能技术生成

问题描述

在 Jenkins Pipeline 中,我们需要对 HTML 文档进行多种操作。之前使用 XMLParser 及 XMLSlurper 库操作 HTML 文档时遇到很多问题,因为 HTML 文档结构松散(比如没有结束标签等等),不是标准的 XML 文件,因此导致 XML 解析失败。

该笔记将整理:在 Groovy 中,操作 HTML 文档的常用方法

解决方案

方案一、使用 Jsoup 类库

方案二、使用 TagSoup 类库

我们未验证该方法,只是阅读 Grape 手册时发现该方法,这里仅简单记录:

// find the PDF links of the Java specifications

@Grab(group='org.ccil.cowan.tagsoup', module='tagsoup', version='1.2.1')

def getHtml() {

def parser = new XmlParser(new org.ccil.cowan.tagsoup.Parser())

parser.parse("https://docs.oracle.com/javase/specs/")

}

html.body.'**'.a.@href.grep(~/.*\.pdf/).each{ println it }

方案一、使用 Jsoup 类库

简单的入门示例

@Grab(group='org.jsoup', module='jsoup', version='

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
好的,我来给您写一个Groovy脚本,实现您的需求。 首先,需要在Katalon中导入java-diff-utils库,具体操作可以参考Katalon官方文档。 接下来,您可以使用以下代码实现两个文件夹对比,并将比较结果输出为HTML文件: ```groovy import difflib.* import java.nio.file.* // 定义要比较的两个文件夹路径 def folder1 = Paths.get("path/to/folder1") def folder2 = Paths.get("path/to/folder2") // 定义输出HTML文件路径 def outputPath = Paths.get("path/to/output.html") // 将文件夹中的所有文件读取为字符串列表 def files1 = folder1.toFile().listFiles().collect { it.text } def files2 = folder2.toFile().listFiles().collect { it.text } // 使用java-diff-utils库进行比较 def patch = DiffUtils.diff(files1, files2) // 生成HTML格式的比较结果 def html = new StringBuilder() html.append("<html><body>") html.append("<h1>Comparison Result</h1>") html.append("<table border='1'>") html.append("<tr><th>File Name</th><th>Line Number</th><th>Content</th></tr>") patch.getDeltas().each { delta -> def orig = delta.getOriginal() def rev = delta.getRevised() def changes = DiffUtils.diff(orig, rev).getDeltas() changes.each { change -> def type = change.getType().toString().toLowerCase() def lines = change.getRevised().getLines() def lineNumber = change.getRevised().getPosition() + 1 lines.each { line -> html.append("<tr>") html.append("<td>${delta.getOriginal().getFile().getName()}</td>") html.append("<td>$lineNumber</td>") html.append("<td class='$type'>$line</td>") html.append("</tr>") lineNumber++ } } } html.append("</table></body></html>") // 将HTML写入输出文件 outputPath.toFile().write(html.toString()) ``` 这段代码会将比较结果输出为HTML文件,并将有差异的行高亮显示。同时,如果两个文件夹中有文件名相同但内容不同的文件,也会将它们的差异数据输出到HTML中。 希望这个脚本能满足您的需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值