2016-12-16 36 views
1

請看下面的簡單示例:如何防止jsoup轉換特殊字符?

public static void main(String[] args) { 
     String html = "<html>\n" + 
        " <head></head>\n" + 
        " <body>\n" + 
        " <div> \n" + 
        " <p> 2 <= X </p> \n" + 
        " </div>\n" + 
        " </body>\n" + 
        "</html>"; 
     Document doc = Jsoup.parse(html);      
     System.out.println(doc.select("p").outerHtml()); 
    } 

此打印出<p> 2 &lt;= X </p>但我期待着打印出所選擇的HTML部分,因爲它是:<p> 2 <= X </p>。我如何告訴jsoup不要轉換'<'符號?

+1

您的輸入是無效的HTML。 Jsoup對你來說是正確的。 – 2016-12-16 14:15:19

+0

我無法控制輸入。有沒有辦法告訴jsoup忽略html的有效性,並解析文檔,因爲它是爲了得到輸出? – RedSea

回答

2

可以使用jsoup。

使用jSoup 1.8.3可以使用保留原始HTML的方法Parser.unescapeEntities

import org.jsoup.parser.Parser; 
... 
String html = Parser.unescapeEntities(original_html, false)); 

在以前的某些版本中,此方法不存在。

更多從this link.

+0

謝謝。那就是訣竅。但是第二個布爾參數是什麼? – RedSea

+0

它似乎沒有任何區別,如果設置爲真或假? – RedSea

+0

@RedSea - 請查看布爾參數的詳細信息https://jsoup.org/apidocs/org/jsoup/parser/Parser.html#unescapeEntities-java.lang.String-boolean- – nullpointer