当前位置: 首页 > 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.jsqmd.com/news/1076076/

相关文章:

  • AI新闻发布在外贸品牌传播中的价值与应用路径
  • If you want faster progress, train like the pros, not just mess around.想要进步更快,就要像职业选手那样系统训练,而非随便敷衍
  • 3步掌握Path of Building PoE2:告别流放之路2构建迷茫
  • 6月5日全球AI资产暴跌,泡沫破灭了吗?如何破解AI发展结构难题?
  • 富文本编辑:基于TextInput的富文本编辑器开发(80)
  • MuleSoft+LangChain企业级AI编排实战:打通数据与大模型的数字脐带
  • 终极Windows风扇控制指南:5个技巧彻底解决电脑噪音与散热难题
  • Iris 护眼软件使用体验:久看屏幕更舒服
  • TinyML实战:在MCU上实现$0.0001成本的AI推理
  • 小程序制作公司哪家好?怎么选才靠谱?
  • 基于C语言快速了解C++面向程序设计(期末适用)
  • 2026校园跑腿小程序多校区趋势:数据隔离+独立运营成标配
  • HACS集成项目终极指南:高效管理Home Assistant自定义组件
  • 公司网络卡顿怎么办?从现象到根因的完整排查与解决指南-爱包干™
  • Silk-V3音频解码器:免费批量转换微信QQ语音的终极方案
  • AI生成量子电路如何适配真实硬件?Qiskit Runtime实战解析
  • 深度解析Windows右键菜单管理:ContextMenuManager如何优雅掌控你的系统交互
  • AI驱动自动化测试:Copilot与MCP本地化协同实战
  • Unity游戏模组加载终极方案:MelonLoader双运行时兼容实战指南
  • 政务数据结构化:构建高可靠行政事务决策导航器
  • 如何永久保存珍贵回忆:WeChatMsg微信聊天记录导出与年度报告生成完整指南
  • 3步掌握CrystalDiskInfo:Windows硬盘健康监控终极指南
  • AI权重支配一切
  • adasdadasds
  • NLP偏见实战指南:从检测、量化到去偏微调的工程化闭环
  • 做小程序的公司有哪些哪家更靠谱?
  • 知名自封袋企业排名
  • 直播间「动口不动手」的声控中控是怎么实现的?技术拆解 + 几款工具横评
  • 从 7B 到 32B,Radeon GPU 承载多模型切换体验
  • 大模型、智能体、MCP 的区别与核心关联