3

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

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

我需要构建 html 页面,从字符串内容构建 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()方法....

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

4

4 回答 4

8

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

于 2011-05-31T19:59:50.167 回答
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);
于 2011-05-31T20:55:34.923 回答
1

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

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

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

于 2011-05-31T20:08:22.620 回答
0

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

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

于 2012-02-21T22:50:45.320 回答