代码之家  ›  专栏  ›  技术社区  ›  David Rabinowitz

用于HTML到文本转换的开源Java库

  •  20
  • David Rabinowitz  · 技术社区  · 15 年前

    您能推荐一个将HTML转换为HTML的开源Java库(最好是ASL/BSD/LGPL许可证)吗? 平原 文本-正确清理所有标记、转换实体(&、等)、处理<br>和表格。

    更多信息

    我把HTML作为一个字符串,不需要从Web上获取它。另外,我正在寻找这样的方法:

    String convertHtmlToPlainText(String html)
    
    5 回复  |  直到 9 年前
        1
  •  18
  •   рüффп Ruwantha    11 年前

    尝试 Jericho .

    这个 TextExtractor 听上去这门课会满足你的要求。很抱歉,由于我是新用户,无法发布第二个链接,但向下滚动一点主页,就会有一个链接指向它。

        2
  •  3
  •   Sean Patrick Floyd    9 年前

    HtmlUnit 它甚至在处理完javascript/ajax之后显示页面。

        3
  •  2
  •   Pkunk    9 年前

    这个 bliki 发动机可以分两步完成此操作。见 info.bliki.wiki / Home

    1. 如何将HTML转换为Mediawiki文本——Nediawiki文本已经是一种相当简单的文本格式,但您可以进一步转换它
    2. 如何将Mediawiki文本转换为纯文本——您的目标。

    它将是大约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();
    

    但结果是您会丢失所有段落格式——不会有任何新行。

        4
  •  0
  •   Rich Seller    15 年前

    我用 TagSoup 它可用于多种语言,并对“在野外”找到的HTML做得非常好。它生成一个清理过的HTML或XML版本,然后您可以使用一些DOM/SAX解析器进行处理。

        5
  •  -1
  •   firefly2442    12 年前

    我已经用过 Apache Commons Lang 换个方向。但看起来它可以通过 StringEscapeUtils .