【问题标题】:Does JSoup support getComputedStyle or the equivalent?JSoup 是否支持 getComputedStyle 或同等功能?
【发布时间】:2011-11-14 00:08:50
【问题描述】:

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

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

我所做的研究似乎表明,我可以通过遍历文档中的所有元素、对每个元素调用 getComputedStyle 并将结果指定为元素的样式来完成此操作。

是的,我意识到通过在单个元素上放置一堆冗余/不必要的样式信息,这很可能会使生成的 HTML 膨胀,但我愿意为更大的 HTML 付出代价,并且尽我所能告诉我们,像这样嵌入内联样式是准确保留格式同时也使 HTML 片段完全可移植的唯一方法。 (如果您对实现该目的有其他建议,我会全力以赴。:-)

回到主题...如果我不能在 JSoup 中使用 getComputedStyle(或等效的),是否有另一个支持 getComputedStyle 或等效的 Java HTML+CSS 解析器?

谢谢。

【问题讨论】:

    标签: java html css dom jsoup


    【解决方案1】:

    这是不可能的。 Jsoup 只是一个支持 CSS 选择器的 HTML 解析器,它不是一个 HTML 渲染器。

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

    没有想到其他工具。 HtmlUnit 非常接近,因为它也可以访问/调用 JavaScript,但 some Google results 建议 getComputedStyle() 也不适用于 HtmlUnit。毕竟它实际上也不是一个真正的 HTML 渲染器。

    【讨论】:

    • Lobo 自 2009 年以来没有任何新版本,因此它似乎已被放弃。我认为我们不想使用无人维护的第三方代码来解决这个问题。
    • 好的,所以如果没有现成的工具,那么我认为我们需要自己实现它是(伪代码):在每个嵌入或链接样式表的 HTML 以相反的顺序解析其中每个样式说明符的样式表 选择 HTML 中的所有匹配节点 将指定样式添加到节点样式的开头 顺序对于确保以后的样式优先很重要超过早期的。听起来对吗? (不知道为什么代码没有显示为 pre。)
    猜你喜欢
    • 1970-01-01
    • 2018-09-21
    • 2013-09-16
    • 2013-09-25
    • 2015-11-13
    • 1970-01-01
    • 2023-04-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多