给定一大块在 and 中很好地显示数据的 HTML,我怎样才能删除所有 html 标记并附加最初包装在 td, div 中的文本并在 Java 中使用换行符?
基本上,这将是尝试将 html 转换为常识中的常规文本。
给定一大块在 and 中很好地显示数据的 HTML,我怎样才能删除所有 html 标记并附加最初包装在 td, div 中的文本并在 Java 中使用换行符?
基本上,这将是尝试将 html 转换为常识中的常规文本。
我在想这样的事情..
// input an HTML page
String htmlPage = "<html><body>Hello,</br>World</body></html>";
// convert <br>,<hr>, and <hX> to new-line
String temp = htmlPage.replaceAll("(< *br *>< *br */>|< *br *>|< *br */>|< *hr[^>]*>|< *h[1-6][^>]*/>)","\n");
// remove all tags
String text = temp.replaceAll("<[^>]>","");
System.out.println(text);
应该打印
Hello,
World
您可以对此进行更多调整,例如您可以替换<body>
或<div>
使用类似\n----------------\n
定义某些结构的东西..
考虑以下输入
<html>
<head>
<title>Title</title>
<script>alert("this is a test");</script>
<style>p{ font-family: "Times New Roman"; }</style>
</head>
<body>
<h1>Test</h1>
<div><p>This is the first line<br/>This is the second line</p></div>
</body>
</html>
代码
// convert <br>,<hr>, and <hX> to new-line
String temp = htmlPage.replaceAll("(< *br *>< *br */>|< *br *>|< *br */>|< *hr[^>]*>|< *h[1-6][^>]*/>)","\n");
// seperate HTML structures
temp = temp.replaceAll("(< *head *>|</? *body *>)","\n================\n");
// seperate HTML structures
temp = temp.replaceAll("(< *div *>|< *script *>|< *style *>)","\n----------------\n");
// get rid of empty lines
temp = temp.replaceAll("\n *\n","");
// remove all tags
String text = temp.replaceAll("<[^>]>","");
System.out.println(text);
应该打印
================
Title
----------------
alert("this is a test");
----------------
p{ font-family: "Times New Roman"; }
================
Test
----------------
This is the first line
This is the second line
================
你可以使用jsoup
jsoup 是一个用于处理真实世界 HTML 的 Java 库。它提供了一个非常方便的 API 用于提取和操作数据,使用最好的 DOM、CSS 和类似 jquery 的方法。
Jsoup.parse(htmltext).text();
您可以在 Jsoup 中找到各种方法
您应该为此使用 [jsoup][1]。使用这个工具很容易解析 HTML 页面。
您可以获得 HTML 文档并可以遍历此处提到的元素:
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
入门指南很容易学习并实现您想要做的事情。