2

您好我正在使用 JSoup 解析 HTML 文件。解析后,我想检查文件是否包含标签。我正在使用以下代码来检查,

htmlDom = parser.parse("<p>My First Heading</p><a href=\"www.google.com\">clk</a>");
Elements pe = htmlDom.select("html");
System.out.println("size  "+pe.size());

即使不存在 HTML 标记,我得到的输出也是“大小 1”。我的猜测是,这是因为 HTML 标签不是强制性的,而且它是隐式的。Head 和 Body 标签也是如此。有什么方法可以检查输入文件中是否存在这些标签?

谢谢你。

4

1 回答 1

3

它不会返回1,因为标签是隐式的,而是因为它您解析自定义 HTML 后出现在Document对象中。htmlDom

这是因为 Jsoup 会尝试遵守HTML5 Parsing Rules,因此会添加缺失的元素并尝试修复损坏的文档结构。如果您还要运行以下命令,我很确定您会得到1回报:

Elements pe = htmlDom.select("head");
System.out.println("size  "+pe.size());

要在 Jsoup 不尝试清理或使您的 HTML 有效的情况下解析 HTML,您可以改用XMLParser如下所示的 included ,它将按原样解析 HTML。

String customHtml = "<p>My First Heading</p><a href=\"www.google.com\">clk</a>";
Document customDoc = Jsoup.parse(customHtml, "", Parser.xmlParser());

因此,与您在问题评论中的假设相反,这很可能与 Jsoup 有关。

于 2014-08-08T09:40:13.617 回答