使用Jsoup过滤HTML标签,获取纯文本

简介: 版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/78735457 通常情况下,把HTML富文本内容保存到数据库字段时,会自带一些HTML标签,然后将这些内容再次显示到网页上时,就能够保持文本在富文本中编辑时的HTML格式。
版权声明:欢迎转载,请注明沉默王二原创。 https://blog.csdn.net/qing_gee/article/details/78735457

通常情况下,把HTML富文本内容保存到数据库字段时,会自带一些HTML标签,然后将这些内容再次显示到网页上时,就能够保持文本在富文本中编辑时的HTML格式。

这种做法毫无疑问是没有问题的,但有的时候,我们需要将HTML标签去掉,只取纯文本内容。这个时候,该怎么做呢?

比如说有这样一段简单的HTML富文本内容,带有p标签(它表示p标签内部的文本是一个段落),但有的时候,我们在显示该内容的缩略文本时,并不需要p标签,也就是说,只想显示“你好呀,沉默王二,请坚持写作!”

注:通常情况下,HTML文本内容要比只有p标签这个复杂!

<p>你好呀,沉默王二,请坚持写作!</p>
AI 代码解读

假如要你来实现这个需求,你能想到的解决办法是什么呢?

1)存入数据库时,既存入<p>你好呀,沉默王二,请坚持写作!</p>,也存入你好呀,沉默王二,请坚持写作!在取的时候按需索取。

2)存入数据库时,只存入<p>你好呀,沉默王二,请坚持写作!</p>,在显示的时候,如果需要p标签,就不过滤p标签;如果不需要p标签,就通过一定的方法过滤掉p标签。过滤的时机有三处,其一是从数据库取数据时通过SQL过滤(但这会增加数据库压力);其二是在服务器端向客户端返回数据时过滤掉HTML标签,再回传给客户端;其三是在view视图呈现时调用formatter进行过滤,我认为这种方法也是最好的。

第一种方案的解决办法, 比如说使用UEditor,如下图。

这里写图片描述

使用UEditor富文本编辑器的话,可以直接通过UEditor提供的两个API将带有HTML标签的内容和没有HTML标签的纯文本内容获取到。

第二种方案的解决办法,通过SQL过滤的方法我暂时还不会,另外它不是最优的解决方案。

第二、第三的区别在于契机不同,但服务器端过滤HTML标签的方法其实是一样的。

首先告诉大家的解决方案是使用jsoup

官网地址为:https://jsoup.org/
截图如下:

这里写图片描述

如果是传统项目的话,在「getting started」处下载jar包添加到项目构建路径下;
如果是Maven 构建项目的话,把一下内容粘贴到pom.xml 文件的依赖节点下。

<dependency>
  <!-- jsoup HTML parser library @ https://jsoup.org/ -->
  <groupId>org.jsoup</groupId>
  <artifactId>jsoup</artifactId>
  <version>1.11.2</version>
</dependency>
AI 代码解读

原HTML富文本内容和使用jsoup过滤后的结果如下图所示:

这里写图片描述

具体代码实现非常简单,只有一行代码:

System.out.println(Jsoup.parse(unsafe).text());
AI 代码解读

使用jsoup过滤的结果是100%的纯文本。而使用一般使用正则表达式去HTML的做法在一定情况并不能保证是绝对的纯文本。

public static String replaceHtml(String html) {
    if (isBlank(html)){
        return "";
    }
    String regEx = "<.+?>";
    Pattern p = Pattern.compile(regEx);
    Matcher m = p.matcher(html);
    String s = m.replaceAll("");
    return s;
}
AI 代码解读

如果想使用formatter,请参照JSP标签库Taglib之自定义function篇,轻松实现日期格式化


原文是在4个月以前编辑的,今天重新整理了一下,感觉清晰多了
这是我的微信公众号,希望你能关注一下,一起加油!

沉默王二

相关文章
HTML5标签的类型
HTML5标签的类型。
144 5
HTML5的新语义化标签
HTML5引入的这些新语义化标签,通过明确标识内容的结构和意义,使得网页结构更加清晰,易于理解和维护。使用这些标签不仅提升了网页的可读性和可访问性,还增强了搜索引擎和辅助技术对网页内容的解析能力。在实际开发中,合理使用这些语义化标签,能够显著提升网页的质量和用户体验。
164 49
HTML(HyperText Markup Language,超文本标记语言)
HTML(HyperText Markup Language,超文本标记语言)
148 11
高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容
本文深入探讨了高效的 HTML 与 CSS 编写技巧,涵盖语义化标签、文档结构优化、CSS 预处理、模块化设计、选择器优化、CSS 变量、媒体查询等内容,旨在提升开发效率、网站性能和用户体验。
148 5
|
7月前
|
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
这篇文章介绍了如何在Spring Boot项目中整合iTextPDF库来导出PDF文件,包括写入大文本和HTML代码,并分析了几种常用的Java PDF导出工具。
1242 0
spring boot 整合 itextpdf 导出 PDF,写入大文本,写入HTML代码,分析当下导出PDF的几个工具
如何解析一个 HTML 文本
【10月更文挑战第23天】在实际应用中,根据具体的需求和场景,我们可以灵活选择解析方法,并结合其他相关技术来实现高效、准确的 HTML 解析。随着网页技术的不断发展,解析 HTML 文本的方法也在不断更新和完善,
除了 `<audio>` 和 `<video>` 标签,HTML5 还支持哪些多媒体格式?
【10月更文挑战第19天】HTML5对多种多媒体格式的支持,为网页开发者提供了丰富的选择,能够更好地满足不同类型多媒体内容在网页中的展示和交互需求,提升了网页的用户体验和多媒体应用的多样性。
【HTML】img标签和超链接标签
【HTML】img标签和超链接标签
109 2
AI助理

你好,我是AI助理

可以解答问题、推荐解决方案等