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