关闭 <link> 标记被 JSoup 忽略
Closing <link> tag ignored by JSoup
我有一个 HTML 文档,我收到它作为字符串,然后我使用 jSoup 解析它。
此 HTML 文档(以字符串形式)包含 <link>
标签如下 -
<link rel="stylesheet" href="css/bootstrap.css" />
这就是我解析它的方式 -
Document doc = Jsoup.parse(html);
其中 html
是字符串形式的 HTML 文档。
在我打印 doc
时解析后,除了 <link>
标记变为 -
之外,其他一切都保持不变
<link rel="stylesheet" href="css/bootstrap.css">
请注意这里没有结束斜线。
另请注意,如果原始字符串包含以下形式的 <link>
标记 -
<link rel="stylesheet" href="css/bootstrap.css"></link>
结果还是一样,即<link rel="stylesheet" href="css/bootstrap.css">
为什么 Jsoup 这样做,我该如何防止这种情况发生?
谢谢!
根据 HTML5 spec on the <link>
element:
Tag omission in text/html:
No end tag.
所以规范说不应该有结束标记。该规范允许结束标记使元素无效,但这不是默认设置。我猜 Jsoup 遵循 HTML 规范。
如果您希望避免修改标签,试试这个:
Document htmldoc = Jsoup.parse(html, baseuri, Parser.xmlParser());
我有一个 HTML 文档,我收到它作为字符串,然后我使用 jSoup 解析它。
此 HTML 文档(以字符串形式)包含 <link>
标签如下 -
<link rel="stylesheet" href="css/bootstrap.css" />
这就是我解析它的方式 -
Document doc = Jsoup.parse(html);
其中 html
是字符串形式的 HTML 文档。
在我打印 doc
时解析后,除了 <link>
标记变为 -
<link rel="stylesheet" href="css/bootstrap.css">
请注意这里没有结束斜线。
另请注意,如果原始字符串包含以下形式的 <link>
标记 -
<link rel="stylesheet" href="css/bootstrap.css"></link>
结果还是一样,即<link rel="stylesheet" href="css/bootstrap.css">
为什么 Jsoup 这样做,我该如何防止这种情况发生?
谢谢!
根据 HTML5 spec on the <link>
element:
Tag omission in text/html:
No end tag.
所以规范说不应该有结束标记。该规范允许结束标记使元素无效,但这不是默认设置。我猜 Jsoup 遵循 HTML 规范。
如果您希望避免修改标签,试试这个:
Document htmldoc = Jsoup.parse(html, baseuri, Parser.xmlParser());