2016-12-16 467 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