Используйте jsoup для кодирования символов HTML - PullRequest
3 голосов
/ 27 февраля 2012

Я должен закодировать символы в Html:

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

Я ищу полезную функцию типа htmlspecialchars в PHP:

String htmlspecialchars(String inputText)

Возможно лииспользовать JSoup для кодирования этих символов?

(я обнаружил htmlEscape в среде Spring, но я не хочу использовать среду Spring только для этой простой функции.)

Ответы [ 3 ]

8 голосов
/ 27 февраля 2012

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

2 голосов
/ 27 февраля 2012

JSoup - это библиотека для разбора HTML.

Не думаю, что вы можете использовать его для кодирования специальных символов в HTML.

Лучший способ сделать это - написать свой собственный метод. Просто вы можете получить этот метод из Spring, и вам не нужно настраивать весь фреймворк. См. исходный код .

1 голос
/ 14 марта 2016

Вы можете подделать его с помощью 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.

Вы заметите, что знаки вопроса не экранированы.

...