JSoup检查是否存在标记和标记

时间:2014-08-07 19:29:20

标签: java html dom jsoup html-parser

您好我使用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标签不是强制性的,而是隐含的。头部和身体标签的情况也是如此。有什么方法可以检查输入文件中是否存在这些标签吗?

谢谢。

1 个答案:

答案 0 :(得分:2)

它不会返回1,因为标记是隐式的,但是因为解析了自定义HTML后Document对象htmlDom中存在

这是因为Jsoup将尝试符合HTML5 Parsing Rules,从而添加缺少的元素并尝试修复损坏的文档结构。如果你要运行以下内容,我很确定你会获得1作为回报:

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

要解析HTML而不使用Jsoup尝试清理或使HTML有效,您可以使用包含的XMLParser,如下所示,它将按原样解析HTML。

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

所以,与你在问题评论中的假设相反,这很可能与Jsoup有关。