使用jsoup编码Html字符

时间:2012-02-27 09:25:36

标签: java html jsoup

我必须将字符编码为Html:

< to &lt;
> to &gt;
' to &#39;
" to &quot;
& to &amp;

我在PHP中寻找像htmlspecialchars这样的实用函数:

String htmlspecialchars(String inputText)

是否可以使用JSoup对这些字符进行编码?

(我在Spring框架中找到了htmlEscape,但我不想仅仅为这个简单的函数使用Spring框架。)

4 个答案:

答案 0 :(得分:8)

Apache Commons有StringEscapeUtils,它有escapeHtml方法。

import org.apache.commons.lang.StringEscapeUtils;

public class MainClass {
    public static void main(String[] args) {
        String strHTMLInput = "<P>MyName<P>";
        String strEscapeHTML = StringEscapeUtils.escapeHtml(strHTMLInput);
        String strUnEscapeHTML = StringEscapeUtils.unescapeHtml(strEscapeHTML);
        System.out.println("Escaped HTML >>> " + strEscapeHTML);
        System.out.println("UnEscaped HTML >>> " + strUnEscapeHTML);
    }
}

http://www.java2s.com/Tutorial/Java/0500__Apache-Common/StringEscape.htm

答案 1 :(得分:2)

JSoup是一个解析HTML的库。

我认为你不能用它来将特殊字符编码成HTML。

最好的方法是编写自己的方法。只需从Spring中获取此方法,您就不需要设置整个框架。请参阅source code

答案 2 :(得分:1)

你可以用Jsoup伪造它,但我确信其他解决方案更彻底,可能更少浪费。您可以使用以下的一些变体:

public static String escapeHtml(String text) {
    return (new TextNode(text, "")).toString();
}

有了这个,

System.out.println(HtmlUtils.escapeHtml("I <don't> \"want\" to see &s and >s."));

的产率:

I &lt;don't&gt; "want" to see &amp;s and &gt;s.

您会注意到问号未被转义。

答案 3 :(得分:0)

如果类路径上已经有 JSoup,只需使用 org.jsoup.nodes.Entities#escape(java.lang.String)