【问题标题】:What library to use for building HTML documents?使用什么库来构建 HTML 文档?
【发布时间】:2011-09-05 18:38:32
【问题描述】:

能否请任何人推荐能够做与这些库相反的事情的库?

HtmlCleaner、TagSoup、HtmlParser、HtmlUnit、jSoup、jTidy、nekoHtml、WebHarvest 或 Jericho。

我需要构建 html 页面,从 String 内容构建 DOM 模型。

编辑:我需要它来进行测试。我有各种类型的输入/字符串,可能在各个地方的 html 页面中......所以我需要动态构建它......然后我根据必须满足或不满足的各种标准处理 html 页面。

我会告诉你我为什么问这个问题,考虑使用 htmlCleaner 来完成这项工作:

List<String> paragraphs = getParagraphs(entity.getFile());
List<TagNode> pNodes = new ArrayList<TagNode>();

TagNode html = cleaner.clean("<html/>");
for(String paragraph : paragraphs) {                
    TagNode p = new TagNode("p");
    pNodes.add(p);
    // CANNOT setText() ?
}
html.addChildren(pNodes);

问题是TagNodegetText() 方法,但没有setText() 方法....

请添加更多关于这个问题有多模糊的 cmets……你能做的最好的事情

【问题讨论】:

  • 那些库的反面?这不是一个模糊的问题吗?
  • 不,不是,这些库的主要目标是解析 html 页面和创建 DOM 表示。我需要完全相反的东西。我必须构建它们,构建 dom 模型并从中创建一个文件...

标签: java html dom htmlcleaner


【解决方案1】:

jwebutils -- 使用 Java 创建 HTML 5 标记的库。它还支持创建 JSON 和 CSS 3 标记。

Jakarta Element Construction Set (ECS) - 用于为各种标记语言生成元素的 Java API,它直接支持 HTML 4.0 和 XML。现在退休了,但有些人真的很喜欢。

【讨论】:

    【解决方案2】:

    如果你特别对 HtmlCleaner 感兴趣,它实际上是构建 html 文档的一个非常方便的选择。

    但是你必须知道,如果你想给一个 TagNode 设置内容,你需要附加一个子 ContentNode 元素:-)

    List<String> paragraphs = getParagraphs(entity.getFile());
    List<TagNode> pNodes = new ArrayList<TagNode>();
    
    TagNode html = new TagNode("html");
    for(String paragraph : paragraphs) {                
        TagNode p = new TagNode("p");
        p.addChild(new ContentNode(paragraph));
        pNodes.add(p);
    }
    html.addChildren(pNodes);
    

    【讨论】:

      【解决方案3】:

      Jsoup,Jsoup,Jsoup!我已经使用了所有这些,而且它是我最喜欢的。您可以使用它来构建文档,此外,它还带来了许多 Jquery 样式遍历的魔力以及迄今为止我在 Java 库中看到的最好的 HTML 文档解析。我对此感到非常高兴,以至于我不介意无耻地宣传它。 ;)

      【讨论】:

      • 嗯,很难弄清楚如何使用这些库来做到这一点,因为它们是用于相反的事情......例如,我在 HtmlCleaner 或 tagSoup 中找不到任何创建的类我无法构建的 html 页面
      • 你能解释一下你想要做什么吗? Jsoup 也可以建立文档。我目前正在使用它来解析和对 HTML 文档进行大量修改。
      • 他说他想要JSoup的反面,但仍然想知道那会是什么。
      • 从这个开始:Element elem = Jsoup.parse("&lt;html/&gt;"); 然后你就有了一个非常丰富的 API 来构建你的文档。
      • 真的是 Element elem = Jsoup.parse("");那比 DocThing thing = DocThingMaker.newEmptyDocumentThing(); ?
      【解决方案4】:

      有很多 Java 模板库,从 JSP 到 FreeMarker,从各种框架(Spring?)中的特定实现到 StringTemplate 等通用库。

      最困难的任务是……做出选择。

      一般来说,这些库提供了制作网页的骨架,并带有“孔”来填充变量。这是最简单的方法,通常与工具配合良好。
      如果你真的想从 Dom 构建,你可以使用 XML 库并生成 XHTML。

      【讨论】:

      • 您的意思是 xerces 或其他解析器?
      • 为什么是解析器? XML 构建器,例如 JAXP
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-05-05
      • 1970-01-01
      • 2020-01-10
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多