我正在编写一个程序,从本地 HTML 文件中提取一些特定信息。然后该信息显示在 Java JFrame 上并导出到 Excel 文件。 (我使用 JSoup 1.9.2 库来进行 HTML 解析)
我遇到了一个问题,每当我从 HTML 文件中提取任何内容时,JSoup 都不会考虑 HTML 标签,如中断标签、行标签等,因此,所有信息都像一大块数据一样被提取没有任何正确的换行符或格式。
向您展示一个示例,如果这是我要读取的数据:
Title
Line 1
Line 2
Unordered List
- element 1
- element 2
数据返回为:
Title Line 1 Line 2 Unordered List element 1 element 2 (i.e. all the HTML tags are ignored)
这是我用于阅读的代码片段:
private String getTitle(Document doc) { // doc is the local HTML file
Elements title = doc.select(".title");
for (Element id : title) {
return id.text();
}
return "No Title Available ";
}
任何人都可以建议我一种方法,可以用来保留 HTML 标记背后的含义,通过它我可以在 JFrame 上显示数据并将其以更易读的格式导出到 Excel 中?
谢谢。
最佳答案
为了向大家通报最新情况,我找到了格式问题的解决方案(更像是解决方法)。我现在正在做的是使用 id.html()
提取完整的 HTML我将其存储在 String 对象中。然后,我使用字符串函数 replaceAll()
使用正则表达式来删除所有 HTML 标记,而不会将所有内容都插入一行。 replaceAll()
函数看起来像 replaceAll("\\<[^>]*>","")
。我的整个 processHTML() 函数看起来像:
private String processHTML(String initial) { //initial is the String with all the HTML tags
String modified = initial;
modified = modified.replaceAll("\\<[^>]*>",""); //regular expression used
modified = modified.trim(); //To get rid of any unwanted space before and after the needed data
//All the replaceAll() functions below are to get rid of any HTML entities that might be left in the data extarcted from the HTML
modified = modified.replaceAll(" ", " ");
modified = modified.replaceAll("<", "<");
modified = modified.replaceAll(">", ">");
modified = modified.replaceAll("&", "&");
modified = modified.replaceAll(""", "\"");
modified = modified.replaceAll("'", "\'");
modified = modified.replaceAll("¢", "¢");
modified = modified.replaceAll("©", "©");
modified = modified.replaceAll("®", "®");
return modified;
}
再次感谢大家为我提供的帮助
干杯。
关于java - 使用 JSOUP 库在 Java 中读取 <br>、<ul>、<li>、<p> 等标签时如何保留它们的含义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39967486/