2016-10-20 156 views
2

我解析包含HTML標記和Javascript代碼中使用以下解析HTML和javascript使用Jsoup

public Document parse(String content) { 
    return Jsoup.parse(content, "", Parser.xmlParser()); 
    } 

的問題是,JavaScript元素已被列入僅在一行HTML字符串。

另外,我嘗試用

public Document parse(String content) { 
    return Jsoup.parse(content, "", Parser.htmlParser()); 
    } 

和Javascript的正常工作......但HTML元素已被列入沒有結束標記。例如:

<link rel="shortcut icon" href="../../static/public/img/favicon.ico" data-th-remove="all"></link> 

已經被解析像

<link rel="shortcut icon" href="../../static/public/img/favicon.ico" data-th-remove="all"> 

當我運行我的應用程序也無法正常工作。

我該如何解決這個問題?有什麼方法可以使用JSOUP一起解析HTML和Javascript嗎?

注意:我剛剛在JSOUP Github上創建了以下問題https://github.com/jhy/jsoup/issues/774

問候,

回答

2

link元素沒有在HTML結束標記。它只出現在標題中。有關說明,請參閱https://developer.mozilla.org/de/docs/Web/HTML/Element/link

所以JSoup行爲與預期當您使用Parser.htmlParser()

駕駛室您更詳細地解釋,爲什麼你不能處理一個未關閉link標籤?

+1

感謝您的評論。 最後,問題是我一直在使用Spring IO Platform提供的Thymeleaf 2.1.5。 Thymeleaf版本使用XML解析器來解析.html文件,因此它需要使用自己的結束標記來標記所有標記。 更新到Thymeleaf 3.0並使用'Parser.htmlParser()'我已經解決了這個問題。 要查看有關解決方案的詳細說明,請查看gitHub問題https://github.com/jhy/jsoup/issues/774。感謝您的幫助。 – jcgarcia