鉴于有一大块HTML可以很好地显示数据,我如何删除所有的html标签并附加最初包含在td中的文本,div用Java中的换行符?
基本上,这是尝试将html转换为常规常规文本。
答案 0 :(得分:1)
您可以使用jsoup
jsoup是一个用于处理真实HTML的Java库。它提供 一个非常方便的API,用于提取和操作数据,使用 最好的DOM,CSS和类似jquery的方法。
Jsoup.parse(htmltext).text();
你可以在Jsoup中找到各种方法
答案 1 :(得分:1)
我在考虑这样的事情......
// 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
================
答案 2 :(得分:0)
你应该使用[jsoup] [1]。使用此工具可以轻松解析HTML页面。
您可以获取HTML文档,并可以遍历此处提到的元素:
Document doc = Jsoup.connect("http://en.wikipedia.org/").get();
Elements newsHeadlines = doc.select("#mp-itn b a");
入门指南简单易学,可以实现您的目标。