ПРИХОДИТЕ УЧИТЬСЯ НОВОЙ ПРОФЕССИИ ЛЕТОМ СО СКИДКОЙ ДО 70%Забронировать скидку

Преобразование HTML entities в Java: аналог .NET HtmlDecode

Пройдите тест, узнайте какой профессии подходите и получите бесплатную карьерную консультацию
В конце подарим скидку до 55% на обучение
Я предпочитаю
0%
Работать самостоятельно и не зависеть от других
Работать в команде и рассчитывать на помощь коллег
Организовывать и контролировать процесс работы

Быстрый ответ

Если вы хотите узнать, как можно выполнить декодирование HTML в Java, то мы сразу предлагаем вам решение – метод StringEscapeUtils.unescapeHtml4() из библиотеки Apache Commons Text.

Java
Скопировать код
import org.apache.commons.text.StringEscapeUtils;

String unescapedHtml = StringEscapeUtils.unescapeHtml4("<div>Демо</div>");
System.out.println(unescapedHtml); // <div>Демо</div>

Вы с лёгкостью сможете добавить эту библиотеку в свой проект через Maven или Gradle.

Пройдите тест и узнайте подходит ли вам сфера IT
Пройти тест

Универсальное решение: Jsoup

Jsoup – это мощный инструмент, который позволяет не только проводить декодирование HTML-сущностей, но также выполнять различные операции с HTML, включая очистку и парсинг. Эта библиотека будет особенно полезна при веб-скрейпинге и санитизации данных.

Java
Скопировать код
import org.jsoup.Jsoup;

String unescapedHtml = Jsoup.parse("&lt;p&gt;Привет, мир!&lt;/p&gt;").text();
System.out.println(unescapedHtml); // Привет, мир!

Работа со старыми версиями HTML: HTML 3.x

Если вам приходится работать со старыми версиями HTML, такими как HTML 3.x, то в этом случае будет полезен метод StringEscapeUtils.unescapeHtml3().

Java
Скопировать код
import org.apache.commons.text.StringEscapeUtils;

String unescapedHtml3 = StringEscapeUtils.unescapeHtml3("&#x26;lt;Старый HTML&#x26;gt;");
System.out.println(unescapedHtml3); // &lt;Старый HTML&gt;

Вариант для проектов на Spring: HtmlUtils

Если ваш проект использует Spring Framework, то для удобства работы с HTML вам предлагается использовать инструмент HtmlUtils.htmlUnescape(), который идеально интегрируется в экосистему Spring.

Java
Скопировать код
import org.springframework.web.util.HtmlUtils;

String unescapedHtmlSpring = HtmlUtils.htmlUnescape("&lt;span&gt;Сила Spring&lt;/span&gt;");
System.out.println(unescapedHtmlSpring); // <span>Сила Spring</span>

Еще один инструмент для вашего Arsenal: unbescape

Библиотека unbescape предлагает вам ещё один способ декодирования HTML-сущностей, аналогичный функции HttpUtility.HtmlDecode из .NET.

Java
Скопировать код
import org.unbescape.html.HtmlEscape;

String unescapedHtmlUnbescape = HtmlEscape.unescapeHtml("&lt;ul&gt;&lt;li&gt;Магия unbescape&lt;/li&gt;&lt;/ul&gt;");
System.out.println(unescapedHtmlUnbescape); // <ul><li>Магия unbescape</li></ul>

Ваш персонализованный подход: Пользовательские HTML-сущности

С использованием Apache Commons вы можете создать механизм поиска для обработки нестандартных HTML-сущностей, применяя пользовательский набор символов.

Java
Скопировать код
import org.apache.commons.text.translate.CharSequenceTranslator;
import org.apache.commons.text.translate.LookupTranslator;

Map<CharSequence, CharSequence> customMap = new HashMap<>();
customMap.put("&apos;", "'");
customMap.put("&euro;", "€");

CharSequenceTranslator customUnescaper = new LookupTranslator(Collections.unmodifiableMap(customMap));
String customUnescapedHtml = customUnescaper.translate("&apos;&euro;");
System.out.println(customUnescapedHtml); // '€

Визуализация

Теперь мы больше не будем замешкаться на сложных символах:

Перед декодированием: "Шоколадный торт с <яйцами> и &молоком&." После декодирования: "Шоколадный торт с <яйцами> и &молоком&."

Мы используем декодер, чтобы расшифровать строение кода:

Декодер:

  • &lt; декодируется в <
  • &gt; декодируется в >
  • &amp; декодируется в &

Ожидаем отзывов о вашем опыте использования! 🍰🥚🥛

Не только именованные, но и числовые HTML-сущности: Разнообразие сценариев

В мире HTML, помимо именованных сущностей (например, &lt;), следует учитывать также числовые (например, &#x3C; для <). Apache Commons и jsoup успешно справятся с обоими типами сущностей.

Java
Скопировать код
String namedEntity = "&copy;"; // ©
String numericEntity = "&#169;"; // также ©

Присоединяйтесь к движению Open Source: Инструменты

Описанные в этом руководстве инструменты – Apache Commons Text, Jsoup, HtmlUtils от Spring и unbescape – являются открытыми проектами. Они развиваются силами сообщества и доступны для использования в ваших проектах.

Полезные материалы

  1. StringEscapeUtils (API Apache Commons Text 1.9) – использование Apache Commons Text для работы с HTML.
  2. OWASP Java HTML Sanitizer | OWASP Foundation – защита от уязвимостей в HTML с помощью OWASP Sanitizer.
  3. jsoup: Java HTML parserjsoup для парсинга, очистки и скрепинга HTML.
  4. GitHub – OWASP/java-html-sanitizerнастраиваемый HTML-санитайзер на GitHub.
  5. HtmlUtils (API Spring Framework 6.1.3)HtmlUtils от Spring для работы с HTML в Spring-приложениях.