Jsoup - <head> 中的 <noscript> 内容被解释为文本

Jsoup - <noscript> content in <head> gets interpreted as text

我遇到了一个问题,将以下 HTML 解析为不需要的结果。

HTML

<html>
<head>
<title>Try jsoup</title>
<noscript><p>thisisatest</p></noscript>
<noscript><img id="tracking-test-noscript" style="width: 1px; height: 1px" src="http://fullwithsheep/img/tracking3.jpg"></noscript>
</head>
<body>
<noscript><p>thisisatest</p></noscript>
<p>This is <a href="http://jsoup.org/">jsoup</a>.</p>
<noscript><img id="tracking-test-noscript" style="width: 1px; height: 1px" src="http://fullwithsheep/img/tracking3.jpg"></noscript>
</body>
</html>

JSOUP 文档解释

<html>
<head>
<title>Try jsoup</title>
<noscript>&lt;p&gt;thisisatest</noscript>
<noscript>&lt;img  id="tracking-test-noscript" style="width: 1px; height: 1px" src="http://fullwithsheep/img/tracking3.jpg"&gt;</noscript>
</head>
<body>
<noscript><p>thisisatest</p></noscript>
<p>This is <a href="http://jsoup.org/">jsoup</a>.</p>
<noscript><img id="tracking-test-noscript" style="width: 1px; height: 1px" src="http://fullwithsheep/img/tracking3.jpg"></noscript>
</body></html>

正如您从头节点内的 noscript 标签中看到的 innerHTML 被解释为文本 - 我想要的是 jsoup 仍然会将它们解释为 html 而不是文本(没有清理< 进入 &lt; 等等)

作为解决方法,我解决此问题的方法是在中断 Jsoup.parse 后选择所有 noscript 标签,并尝试将相应 noscript 标签的文本转换回 html。但是,感觉这不是正确的方法 - 这是 Jsoup 库中的错误还是这种行为是故意的?

使用 xmlParser 避免不需要的 HTML 修改:

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

默认解析器treats input as HTML5, and enforces the creation of a normalised document, based on a knowledge of the semantics of the incoming tags
while xmlParser assumes no knowledge of the incoming tags and does not treat it as HTML, rather creates a simple tree directly from the input 这就是你所需要的。

引用来自文档:https://jsoup.org/apidocs/org/jsoup/parser/Parser.html#xmlParser()