我遇到一个问题,JSoup将内联样式移动到head标签。例如。以下内容:
<style>.foo { background: url(/path1/img.jpg); }</style>
解析后的转换为以下文档:
<html>
<head>
<style>.foo { background: url(/path1/img.jpg); }</style>
</head>
<body></body>
</html>
此重定位会破坏处理样式标记内非标准标记处理的应用程序逻辑。我假设,内联脚本标记将发生相同的重定位。
有没有办法禁用此重定位?
答案 0 :(得分:1)
假设您使用的是HTML4,<style>
标记应该在<head>
标记中,但仍然可以使用。检查DTD,因为将它放在别处通常是不好的做法。如果你使用HTML5,你可以使用<style scoped>
标签,它可以让你把它放在你想要的任何地方。
如果您不是源代码的所有者,则以下解决方案适合您。
您可以使用Jsoup XmlParser而不是常规的HtmlParser,它将在不知道标记的情况下解析文档,而是按原样解析它。
Document doc = Jsoup.parse(html, "", Parser.xmlParser());
将像源一样呈现您的Document
html。