[英]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.