簡體   English   中英

JSoup檢查是否 <HTML> , <HEAD> 和 <BODY> 標簽存在

[英]JSoup check if <HTML>,<HEAD> and <BODY> tags are present

嗨,我正在使用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標簽,我得到的輸出也是“ size 1”。 我的猜測是,這是因為HTML標記不是強制性的,而是隱式的。 頭部和身體標簽也是如此。 有什么方法可以檢查輸入文件中是否存在這些標記?

謝謝。

它不會返回1 ,因為標簽是隱式的,而是因為它存在於Document對象htmlDom已解析的自定義HTML之后。

這是因為Jsoup將嘗試遵循HTML5解析規則 ,從而添加缺少的元素並嘗試修復損壞的文檔結構。 我非常確定,如果同時運行以下命令,您將得到1的回報:

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

要在沒有Jsoup嘗試清理或使您的HTML有效的情況下解析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有關。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM