您能推荐一个开源Java库(最好是ASL / BSD / LGPL许可证),将HTML转换为 plain 文本 - 清理所有标签,转换实体(&,等)和处理< br>和表格。
更多信息
我将HTML作为字符串,不需要从网上获取它。另外,我正在寻找的是这样的方法:
String convertHtmlToPlainText(String html)
答案 0 :(得分:19)
尝试Jericho。
TextExtractor类听起来会像你想要的那样。抱歉无法发布第二个链接,因为我是新用户,但稍微向下滚动主页,并且有一个链接。
答案 1 :(得分:3)
HtmlUnit,甚至在处理JavaScript / Ajax后显示页面。
答案 2 :(得分:2)
bliki引擎可以分两步完成此操作。见info.bliki.wiki / Home
这将是一些7-8行代码,如下所示:
// html to wiki
import info.bliki.html.HTML2WikiConverter;
import info.bliki.html.wikipedia.ToWikipedia;
// wiki to plain text
import info.bliki.wiki.filter.PlainTextConverter;
import info.bliki.wiki.model.WikiModel;
...
String sbodyhtml = readFile( infilepath ); //get content as string
HTML2WikiConverter conv = new HTML2WikiConverter();
conv.setInputHTML( sbodyhtml );
String resultwiki = conv.toWiki(new ToWikipedia());
WikiModel wikiModel = new WikiModel("${image}", "${title}");
String plainStr = wikiModel.render(new PlainTextConverter(false), resultwiki );
System.out.println( plainStr );
Jsoup可以做到这一点:
import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;
...
Document doc = Jsoup.parse(sbodyhtml);
String plainStr = doc.body().text();
但结果会丢失所有段落格式 - 没有任何换行符。
答案 3 :(得分:0)
我使用TagSoup,它可用于多种语言,并且在“野外”找到HTML时效果非常好。它会生成HTML或XML的清理版本,然后您可以使用某些DOM / SAX解析器进行处理。
答案 4 :(得分:-1)
我已经使用Apache Commons Lang来反过来了。但看起来它可以通过StringEscapeUtils完成您的需要。