Jsoup - 如何通过转义而不删除不需要的 html 来清理 html?

2023-12-27

有没有办法让 jsoup 通过转义不需要的 HTML 而不是完全删除它来清理包含 HTML 的字符串?我的例子:

String dirty = "This is <b>REALLY</b> dirty code from <a href="www.rubbish.url.zzzz">haxors-r-us</a>
String clean = Jsoup.clean(dirty, new Whitelist().addTags("a").addAttributes("a", "href", "name", "rel", "target"));

这给出了一个“干净”的字符串:

This is    REALLY    dirty code from <a href="www.rubbish.url.zzzz">haxors-r-us</a>

我想要的是“干净”的字符串:

"This is &lt;b&gt;REALLY&lt;/b&gt; dirty code from <a href="www.rubbish.url.zzzz">haxors-r-us</a>

假设正在解析字符串而不是 HTML 文档(根据您的问题),此方法将起作用:

public String escapeHtml(String source) {
    Document doc = Jsoup.parseBodyFragment(source);
    Elements elements = doc.select("b");
    for (Element element : elements) {
        element.replaceWith(new TextNode(element.toString(),""));
    }
    return Jsoup.clean(doc.body().toString(), new Whitelist().addTags("a").addAttributes("a", "href", "name", "rel", "target"));
}

您可以将“b”标记作为参数来传递您希望转义的标记列表。

相关的通过 JUnit 测试:

@Test
public void testHtmlEscaping() throws Exception {
    String source = "This is <b>REALLY</b> dirty code from <a href=\"www.rubbish.url.zzzz\">haxors-r-us</a>";
    String expected = "This is &lt;b&gt;REALLY&lt;/b&gt; dirty code from \n<a href=\"www.rubbish.url.zzzz\">haxors-r-us</a>";
    String transformed = transformer.escapeHtml(source);
    assertEquals(transformed, expected);
}

请注意,我在测试的“预期”字符串中的“a”标记之前添加了一行 return“\n”,因为 JSoup 格式化了页面。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Jsoup - 如何通过转义而不删除不需要的 html 来清理 html? 的相关文章

  • 如何使用 JSoup 通过表单提交文本

    我想使用 JSoup 向此表单提交一些文本 我该怎么做呢
  • jsoup - 从维基百科文章中提取文本

    我正在编写一些 Java 代码 以便使用维基百科的文本实现 NLP 任务 如何使用 JSoup 提取维基百科文章的所有文本 例如http en wikipedia org wiki 波士顿 Document doc Jsoup connec
  • JSOUP HTML 解析器

    有没有办法得到起始行号和列号 and 结束行号和列号元素 标签 我正在创建 HTML 编辑器 需要突出显示标签以根据给定的某些场景进行速度优化起始和结束行号和列号 不 不幸的是 目前 jsoup 无法做到这一点 目前 Jsoup 不跟踪行号
  • 如何将本地 html 文件加载到 Jsoup 中?

    我似乎无法使用 Jsoup 库加载本地 html 文件 或者至少它似乎没有意识到这一点 我在本地文件中硬编码了确切的 html 作为 var html 当我切换到该文件而不是文件输入时 代码完美运行 但两次都会读取该文件 import ja
  • 从 cookiesyncmanager 进行 Jsoup cookie 身份验证以从 https 站点抓取

    我有一个使用 webview 的 android 应用程序 用户必须使用用户名和密码登录 然后才能重定向到我想使用 jsoup 刮除数据的页面 由于 jsoup 线程将是不同的会话 因此用户必须再次登录 现在我想使用从 webview 接收
  • 使用 Jsoup 从网页中提取语言

    例如我有 web page 我想用 Jsoup 提取字符串 en 我尝试使用选择器和属性但没有成功 Document htmlDoc Jsoup parse html Element taglang htmlDoc select html
  • 尽管实际和预期相同,但 JUnit 给出 ComparisonFailure

    我正在尝试使用 Jsoup 解析网站中的字符串 并编写以下测试来验证解析 这是我的测试 Test public void extractBookData throws Exception String bookLink some addre
  • 安装 JAR 文件

    我刚刚下载了 Jsouphttp jsoup org download http jsoup org download jsoup 1 7 2 jar 问题很简单 如何安装 安装最新的 JRE 版本后 我已经尝试过右键单击 gt 打开方式
  • jSoup - 删除特定的样式属性

    我错过了什么吗 有一个更好的方法吗 INPUT span Dr Who is u usually u available for consultations Mon Thurs afternoons and Friday 9a span
  • JSoup:请求 JSON 响应

    我正在使用 JSoup 进行身份验证 然后连接到网站 某些 URL 具有 JSON 响应 因为网站的一部分采用 AJAX JSoup 可以处理 JSON 响应吗 Connection Response doc Jsoup connect d
  • Jsoup:如何将包含 HTML 的字符串转换为 XHTML 文档?

    标题说明了一切 如何使用 Jsoup 做到这一点 我不需要文件 只需使用 XHTML 我只找到了一些带有字节数组和文件输出的示例 我只需要一个有效的 XHTML 即可稍后与 itext PdfWriter 和 XMLWorker 一起使用
  • 在 Android 中使用 Jaunt 时类名冲突

    我正在尝试使用短动API http jaunt api com 根据建议使用 androidthis https stackoverflow com a 20002760 1291122所以回答 但当我运行项目时出现此错误 Could no
  • 在Java中解析之前执行点击网页元素

    我正在尝试使用 DOM 解析器解析 HTML 页面并且jsoup https jsoup org 图书馆 我面临的问题是这样的 网站上有两个按钮显示两个不同的表格 我需要解析单击第二个按钮时显示的表格 单击第二个按钮后会设置不同的属性值 当
  • Jsoup:获取某个元素之前的所有元素/删除某个元素之后的所有元素

    假设我有这样的html div class pets div class pet div div class pet div div class pet div div class pet div div class friends pet
  • 使用 Jsoup 提取 Span 标签数据

    我正在尝试使用 Jsoup 提取 html 中的特定内容 下面是示例 html 内容 div class shop section line bmargin10 tmargin10 div class price section fksk
  • jSoup 从 类获取文本

    我有一部分 HTML 文件 格式如下 h6 class uiStreamMessage span class messageBody Welcome span h6 在该文件中 还有其他跨度类 但我只想获取所有 messageBody 范围
  • Jsoup 解析和嵌套标签

    我正在学习 Jsoup 并有这个 HTML p Content p p Content p p Content p 我使用 Jsoup parse 和文档 select p 来捕获 内容 并且效果很好 但 p Content p p Con
  • 在 Java 中从复杂的 HTML 表格中提取数据到二维数组

    如何转换 HTML 表格带有 colspan 和 rowspanJava中的二维数组 矩阵 我在 Python 和 jQuery 中找到了很好的解决方案 但在 Java 中却没有 只有通过 jsoup 的非常简单的表 XSLT 有一种很好的
  • 如何为 Jsoup 添加代理支持?

    我是 Java 初学者 我的第一个任务是解析大约 10 000 个 URL 并从中提取一些信息 为此我正在使用Jsoup并且运行良好 但现在我想为其添加代理支持 代理也有用户名和密码 您可以轻松设置代理 System setProperty
  • Jsoup - 隐藏的div类?

    我正在尝试爬取 div 类 但到目前为止我尝试过的一切都失败了 我正在尝试抓取元素 a href div class s buttons button s buttons buttonAlt s buttons buttonSlashBac

随机推荐