Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/394.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用jsoup对Html字符进行编码_Java_Html_Jsoup - Fatal编程技术网

Java 使用jsoup对Html字符进行编码

Java 使用jsoup对Html字符进行编码,java,html,jsoup,Java,Html,Jsoup,我必须将字符编码为Html: < to &lt; > to &gt; ' to &#39; " to &quot; & to &amp; 是否可以使用JSoup对这些字符进行编码 (我在Spring框架中找到了,但我不想仅仅为了这个简单的功能而使用Spring框架。)JSoup是一个解析HTML的库 我认为你不能用它把特殊字符编码成HTML 最好的方法是编写自己的方法。您只需从Spring获取这个方法,就不需要设置整个框架。请参阅。A

我必须将字符编码为Html:

< to &lt;
> to &gt;
' to &#39;
" to &quot;
& to &amp;
是否可以使用JSoup对这些字符进行编码


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

JSoup是一个解析HTML的库

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


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

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);
    }
}
import org.apache.commons.lang.StringEscapeUtils;
公共类主类{
公共静态void main(字符串[]args){
字符串strHTMLInput=“

MyName

”; String strEscapeHTML=StringEscapeUtils.escapeHtml(strHTMLInput); String strunescapethtml=StringEscapeUtils.unescapethtml(strescapethtml); System.out.println(“转义HTML>>>”+街景HTML); System.out.println(“UnEscaped HTML>>>”+strunescapethtml); } }


你可以用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."));

您将注意到问号没有转义。

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

好的,我将使用Spring的源代码(它似乎基于Jakarta Commons lang及其StringEscapeUtils类)。(我只是想我也可以使用JSoup对字符进行编码,因为我的项目中的其他任务也需要JSoup JAR。谢谢,这也行。我想著名的Google Guava的未来版本也会有转义器类。
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.