使用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>

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

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>

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

这里写图片描述

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

System.out.println(Jsoup.parse(unsafe).text());

使用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;
}

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


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

沉默王二

相关文章
|
24天前
|
数据采集 移动开发 前端开发
HTML代码的革命:语义化标签的魅力,让你的网页结构焕然一新!
【8月更文挑战第26天】本文探讨了Web前端开发中的语义化标签概念及其重要性。语义化标签通过使用具有明确含义的HTML标签来构建页面结构,提升了网页的可访问性及搜索引擎优化效果,并增强了代码的可读性和维护性。文章还讨论了实际开发中遇到的问题及未来发展趋势。
29 0
|
1月前
|
移动开发 搜索推荐 前端开发
HTML结构的基本标签
HTML结构的基本标签
|
4天前
|
XML 数据格式 Python
Python技巧:将HTML实体代码转换为文本的方法
在选择方法时,考虑到实际的应用场景和需求是很重要的。通常,使用标准库的 `html`模块就足以满足大多数基本需求。对于复杂的HTML文档处理,则可能需要 `BeautifulSoup`。而在特殊场合,或者为了最大限度的控制和定制化,可以考虑正则表达式。
21 12
|
10天前
|
前端开发 Windows
【前端web入门第一天】02 HTML图片标签 超链接标签 音频标签 视频标签
本文档详细介绍了HTML中的图片、超链接、音频和视频标签的使用方法。首先讲解了`&lt;img&gt;`标签的基本用法及其属性,包括如何使用相对路径和绝对路径。接着介绍了`&lt;a&gt;`标签,用于创建超链接,并展示了如何设置目标页面打开方式。最后,文档还涵盖了如何在网页中嵌入音频和视频文件,包括简化写法及常用属性。
28 13
|
9天前
|
搜索推荐 SEO
HTML中各种标题标签的正确使用方法及其特点
在HTML中,标题标签(`&lt;h1&gt;`至`&lt;h6&gt;`)用于定义文档的标题结构。`&lt;h1&gt;`表示主标题,每个页面应只有一个;`&lt;h2&gt;`至`&lt;h6&gt;`分别表示不同层级的子标题,可用于细分内容。正确使用这些标签不仅有助于文档的层次分明和可读性提升,还能优化SEO。使用时需注意保持层级结构连续、内容描述清晰。
|
9天前
|
Web App开发 前端开发 JavaScript
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
HTML/CSS/JS学习笔记 Day3(HTML--网页标签 下)
|
8天前
|
搜索推荐 索引 SEO
HTML 文本格式化对于搜索引擎优化(SEO)
HTML文本格式化是搜索引擎优化(SEO)的关键,合理的格式化有助于搜索引擎理解网页内容,提升排名。主要技巧包括:使用正确的标题标签、组织段落和列表、自然融入关键词、优化图像及链接,并使用语义化标签和Meta标签。遵循这些最佳实践,可以显著提高SEO效果,吸引更多访客。
HTML基础知识(1)常用标签的使用 h、p、img、meta、a、iframe...
该博客文章详细介绍了HTML的基础知识,包括注释、标签属性、常用标签、实体、图片引入、meta标签、内联框架、超链接的使用,并通过代码示例和测试结果截图展示了这些元素在网页中的应用效果。
HTML基础知识(1)常用标签的使用 h、p、img、meta、a、iframe...
|
22天前
|
移动开发 数据安全/隐私保护 UED
HTML表单标签详解:如何用HTML标签打造互动网页?
通过合理使用HTML表单标签,可以构建功能丰富、用户友好的互动网页。HTML表单的元素和属性提供了丰富的输入选项和验证功能,使得收集和处理用户输入成为可能。随着HTML5的发展,表单元素的功能性和用户体验将继续得到提升。开发者应充分利用这些工具,为用户打造流畅、互动性强的网页体验。
32 4
|
1天前
|
移动开发 HTML5
这些年没来得及学习的一些 HTML5 标签
【9月更文挑战第16天】HTML5 引入了许多新标签,增强了网页的功能与便利性。这些标签包括结构标签如 `&lt;header&gt;`(定义页眉)、`&lt;footer&gt;`(定义页脚)、`&lt;nav&gt;`(定义导航链接)、`&lt;section&gt;`(定义文档节)和 `&lt;article&gt;`(定义独立内容),以及多媒体标签 `&lt;audio&gt;` 和 `&lt;video&gt;`,用于播放音频和视频。此外,还有表单相关标签,如 `&lt;datalist&gt。