可以请任何人推荐能够做到与这些库相反的库吗?
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);
问题是TagNode
有getText()
方法,但没有setText()
方法....
请添加更多有关此问题含糊不清的评论...您可以做的最好的事情
答案 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。现在退休了,但有些人非常喜欢它。