我正在编写一个从本地HTML文件中提取某些信息的程序。然后,该信息将显示在Java JFrame上,并导出到excel文件。 (我正在使用JSoup 1.9.2库进行HTML解析)
我遇到的问题是,每当我从HTML文件中提取任何内容时,JSoup都不会考虑破解标记,行标记等HTML标记,因此,所有信息都被提取为大块数据没有任何适当的换行符或格式。
为了向您展示一个示例,如果这是我想要阅读的数据:
标题
第1行
第2行
无序 列出
- 元素1
- 元素2
数据将以:
返回标题第1行第2行无序列表元素1元素2(即所有 HTML标记被忽略)
这是我用于阅读的一段代码:
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中吗?
感谢。
答案 0 :(得分:1)
为了给每个人一个更新,我能够找到格式化问题的解决方案(更像是一种解决方法)。我现在正在做的是使用id.html()
提取完整的HTML,我将其存储在String对象中。然后,我使用带有正则表达式的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;
}
再次感谢大家帮助我这个
干杯。