用于构建HTML文档的库是什么?

时间:2011-05-31 19:58:24

标签: java html dom htmlcleaner

可以请任何人推荐能够做到与这些库相反的库吗?

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

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

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

我会告诉你为什么我问这个问题,考虑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()方法....

请添加更多有关此问题含糊不清的评论...您可以做的最好的事情

4 个答案:

答案 0 :(得分:8)

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

答案 1 :(得分: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);

答案 2 :(得分:1)

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

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

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

答案 3 :(得分:0)

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

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