当前位置: 首页 > news >正文

使用 Java 提取 HTML 文件中的纯文本内容

、实现原理

Free Spire.Doc for Java 是一款免费库,其核心设计围绕 Word 文档的段落、节、表格等元素展开。当调用loadFromFile方法并指定FileFormat.Html时,库内部会将 HTML 标签、样式和文本映射到自己的文档对象模型中。

随后调用getText()方法,库会遍历文档树,将所有文本节点的内容拼接并返回,同时过滤掉 HTML 标签和大部分脚本/样式内容。这种方式本质上是一种“将 HTML 解析为富文本再提取纯文本”的桥接方案。


二、环境准备

添加依赖:在项目的pom.xml中添加仓库地址与依赖坐标:

<!-- 仓库配置 --> <repositories> <repository> <id>com.e-iceblue</id> <name>e-iceblue</name> <url>https://repo.e-iceblue.com/nexus/content/groups/public/</url> </repository> </repositories> <!-- 核心依赖 --> <dependency> <groupId>e-iceblue</groupId> <artifactId>spire.doc.free</artifactId> <version>14.3.1</version> </dependency>

如果使用 Gradle:

implementation 'e-iceblue:spire.doc.free:14.3.1@jar'

或者手动下载 JAR 文件并添加到 classpath。


三、Java 实现代码

下面是一个完整的示例,展示如何读取 HTML 文件、提取文本并保存为 TXT 文件。

import com.spire.doc.Document; import com.spire.doc.FileFormat; import java.io.FileWriter; import java.io.IOException; public class ExtractTextFromHTML { public static void main(String[] args) { // 1. 创建 Document 对象 Document doc = new Document(); // 2. 加载 HTML 文件(指定格式为 Html) doc.loadFromFile("Sample.html", FileFormat.Html); // 3. 获取提取的纯文本 String text = doc.getText(); // 4. 将文本写入输出文件 try (FileWriter fileWriter = new FileWriter("HTMLText.txt")) { fileWriter.write(text); System.out.println("文本提取完成,已保存至 HTMLText.txt"); } catch (IOException e) { System.err.println("写入文件失败:" + e.getMessage()); } } }

代码说明

  • 第 1 步:实例化Document类,这是 Free Spire.Doc 的核心入口,用于承载文档内容。
  • 第 2 步loadFromFile方法有两个参数:文件路径和文件格式。FileFormat.Html告诉库按 HTML 方式解析输入。
  • 第 3 步getText()返回文档中所有文本内容的字符串表示,换行符和空格按内部规则保留,但 HTML 标签被完全剥离。
  • 第 4 步:使用 try-with-resources 语法安全地写入 TXT 文件。

四、注意事项与局限性

1. 文本布局简化

getText()返回的文本不保证保留原始 HTML 中的表格结构、缩进或列表符号。对于需要保持格式的提取任务(如表格转 CSV),此方法可能不适用。

2. 对 JavaScript 和 CSS 的处理

库在加载 HTML 时会忽略<script><style>标签内的内容,但部分内联样式或事件属性可能残留于文本?实际测试表明,getText()基本只提取可见文本节点,不会输出脚本或样式代码,比较干净。

3. 免费版适用场景

免费版本支持轻量级 HTML 文本提取,有页数限制仅满足中小型项目、个人开发的基础需求;复杂文档处理场景可根据业务选型其他方案。

http://www.gsyq.cn/news/1588008.html

相关文章:

  • 3步掌握Path of Building PoE2:告别流放之路2构建迷茫
  • MuleSoft+LangChain企业级AI编排实战:打通数据与大模型的数字脐带
  • 基于C语言快速了解C++面向程序设计(期末适用)
  • 2026校园跑腿小程序多校区趋势:数据隔离+独立运营成标配
  • Iris 护眼软件使用体验:久看屏幕更舒服
  • Silk-V3音频解码器:免费批量转换微信QQ语音的终极方案
  • 公司网络卡顿怎么办?从现象到根因的完整排查与解决指南-爱包干™
  • 政务数据结构化:构建高可靠行政事务决策导航器
  • AI权重支配一切
  • 你的 I2C 为什么没反应?
  • 文化不是软实力,而是数据中心企业的长期硬能力
  • OBS实时字幕插件:为直播添加Google语音识别字幕的完整指南
  • 做小程序找哪家公司更专业靠谱?
  • ESXi 8.0 U2 升级后 HPP 存储多路径策略失效完整修复教程
  • Radeon GPU 加速大模型,Token 生成速度提升三倍
  • 认知科学与类脑计算 笔记草稿 非最终版
  • GPT 到底是什么?从“聊天玩具“到“能干活的操作系统“——一篇把 GPT 讲清楚的长帖
  • 成都企业如何选择AI智能体服务商?选型指南
  • 量化模型怎么选,Q4 与 Q5 在 Ryzen AI 上的表现
  • 本地大模型长文本处理,十万字小说一键总结
  • Navicat密码解密:3种方法帮你找回丢失的数据库连接凭证
  • DNA分类实战:NGS数据特征工程与机器学习落地指南
  • 鸿蒙ArkTS 零基础完整入门精讲(五大布局+全套组件+状态管理+交互事件)
  • 新手学 Linux:从第一个命令到跑起来的环境
  • 中科蓝讯-测试耳机本地手机铃声
  • 性能测评|2026年电动平车十大厂家排行榜TOP10
  • 生产级机器学习服务落地:ONNX+Triton实战指南
  • CSRF攻击原理、防御与实战:从漏洞复现到Token安全实践
  • 澳大利亚海牙认证在哪里办理?澳洲海牙认证办理流程是什么?
  • GEO 贴牌怎么做 2026 选型攻略,依托实测案例规避贴牌套路