2011-09-09 37 views
2

JSoup在分析HTML文档时是否返回单个文档元素上的getComputedStyle文档树?JSoup是否支持getComputedStyle或等价的?

我想要做的是将CSS内联到HTML片段中,以便我可以将片段插入到更大的HTML文档中,并保留其所有格式,但不会混淆文档中的任何其他格式。

我所做的研究似乎表明,我可以通过遍历文档中的所有元素,在每个元素上调用getComputedStyle,并将结果指定为元素的样式来实现此目的。

是的,我意识到这可能会通过在各个元素上放入大量冗余/不必要的样式信息而导致产生的HTML膨胀,但我愿意为更大的HTML付出代价,并且就我而言可以说,像这样内嵌样式是保持格式准确的唯一方法,同时也使HTML片段完全可移植。 (如果你有另外一个建议来完成这个目的,我会全力以赴的。:-)

回到主题...如果我不能在JSoup中使用getComputedStyle(或者等价的),那么在那里另一个支持getComputedStyle或等价的Java HTML + CSS解析器?

谢谢。

回答

0

这是不可能的。 Jsoup只是一个具有CSS选择器支持的HTML解析器,它不是一个HTML呈现器。

你可能想看看Lobobrowser这是一个基于Java的HTML渲染器,支持JavaScript等。 我不知道也不保证getComputedStyle()被Lobo支持。

没有其他工具浮现在脑海。 HtmlUnit就近了,因为它也可以访问/调用JavaScript,但是some Google results暗示getComputedStyle()对HtmlUnit也不起作用。毕竟它实际上也不是一个真正的HTML渲染器。

+1

自2009年以来,Lobo还没有任何新的发布,所以它似乎被放弃了。我认为我们不想用没有人维护的第三方代码来解决这个问题。 –

+0

好的,如果没有现成的工具,那么我认为我们自己需要做的是(伪代码): 找到HTML 中的每个嵌入或链接样式表或链接样式表以相反的顺序 解析样式表 每个风格说明它 在HTML 前置指定的样式到节点的风格开始选择所有匹配的节点 的顺序很重要,以确保以后的风格优先于先前的。 这听起来没错吗? (不知道为什么代码没有显示为pre。) –