如何防止JSoup重新定位内联样式?

时间:2014-02-26 01:24:16

标签: jsoup

我遇到一个问题,JSoup将内联样式移动到head标签。例如。以下内容:

<style>.foo { background: url(/path1/img.jpg); }</style>
解析后的

转换为以下文档:

<html>
 <head>
  <style>.foo { background: url(/path1/img.jpg); }</style>
 </head>
 <body></body>
</html>

此重定位会破坏处理样式标记内非标准标记处理的应用程序逻辑。我假设,内联脚本标记将发生相同的重定位。

有没有办法禁用此重定位?

1 个答案:

答案 0 :(得分:1)

假设您使用的是HTML4,<style>标记应该在<head>标记中,但仍然可以使用。检查DTD,因为将它放在别处通常是不好的做法。如果你使用HTML5,你可以使用<style scoped>标签,它可以让你把它放在你想要的任何地方。

如果您不是源代码的所有者,则以下解决方案适合您。

您可以使用Jsoup XmlParser而不是常规的HtmlParser,它将在不知道标记的情况下解析文档,而是按原样解析它。

Document doc = Jsoup.parse(html, "", Parser.xmlParser());

将像源一样呈现您的Document html。