Преобразование HTML entities в Java: аналог .NET HtmlDecode
Быстрый ответ
Если вы хотите узнать, как можно выполнить декодирование HTML в Java, то мы сразу предлагаем вам решение – метод StringEscapeUtils.unescapeHtml4()
из библиотеки Apache Commons Text.
import org.apache.commons.text.StringEscapeUtils;
String unescapedHtml = StringEscapeUtils.unescapeHtml4("<div>Демо</div>");
System.out.println(unescapedHtml); // <div>Демо</div>
Вы с лёгкостью сможете добавить эту библиотеку в свой проект через Maven или Gradle.
Универсальное решение: Jsoup
Jsoup – это мощный инструмент, который позволяет не только проводить декодирование HTML-сущностей, но также выполнять различные операции с HTML, включая очистку и парсинг. Эта библиотека будет особенно полезна при веб-скрейпинге и санитизации данных.
import org.jsoup.Jsoup;
String unescapedHtml = Jsoup.parse("<p>Привет, мир!</p>").text();
System.out.println(unescapedHtml); // Привет, мир!
Работа со старыми версиями HTML: HTML 3.x
Если вам приходится работать со старыми версиями HTML, такими как HTML 3.x, то в этом случае будет полезен метод StringEscapeUtils.unescapeHtml3()
.
import org.apache.commons.text.StringEscapeUtils;
String unescapedHtml3 = StringEscapeUtils.unescapeHtml3("&lt;Старый HTML&gt;");
System.out.println(unescapedHtml3); // <Старый HTML>
Вариант для проектов на Spring: HtmlUtils
Если ваш проект использует Spring Framework, то для удобства работы с HTML вам предлагается использовать инструмент HtmlUtils.htmlUnescape()
, который идеально интегрируется в экосистему Spring.
import org.springframework.web.util.HtmlUtils;
String unescapedHtmlSpring = HtmlUtils.htmlUnescape("<span>Сила Spring</span>");
System.out.println(unescapedHtmlSpring); // <span>Сила Spring</span>
Еще один инструмент для вашего Arsenal: unbescape
Библиотека unbescape предлагает вам ещё один способ декодирования HTML-сущностей, аналогичный функции HttpUtility.HtmlDecode
из .NET.
import org.unbescape.html.HtmlEscape;
String unescapedHtmlUnbescape = HtmlEscape.unescapeHtml("<ul><li>Магия unbescape</li></ul>");
System.out.println(unescapedHtmlUnbescape); // <ul><li>Магия unbescape</li></ul>
Ваш персонализованный подход: Пользовательские HTML-сущности
С использованием Apache Commons вы можете создать механизм поиска для обработки нестандартных HTML-сущностей, применяя пользовательский набор символов.
import org.apache.commons.text.translate.CharSequenceTranslator;
import org.apache.commons.text.translate.LookupTranslator;
Map<CharSequence, CharSequence> customMap = new HashMap<>();
customMap.put("'", "'");
customMap.put("€", "€");
CharSequenceTranslator customUnescaper = new LookupTranslator(Collections.unmodifiableMap(customMap));
String customUnescapedHtml = customUnescaper.translate("'€");
System.out.println(customUnescapedHtml); // '€
Визуализация
Теперь мы больше не будем замешкаться на сложных символах:
Перед декодированием: "Шоколадный торт с <яйцами> и &молоком&." После декодирования: "Шоколадный торт с <яйцами> и &молоком&."
Мы используем декодер, чтобы расшифровать строение кода:
Декодер:
<
декодируется в<
>
декодируется в>
&
декодируется в&
Ожидаем отзывов о вашем опыте использования! 🍰🥚🥛
Не только именованные, но и числовые HTML-сущности: Разнообразие сценариев
В мире HTML, помимо именованных сущностей (например, <
), следует учитывать также числовые (например, <
для <
). Apache Commons и jsoup успешно справятся с обоими типами сущностей.
String namedEntity = "©"; // ©
String numericEntity = "©"; // также ©
Присоединяйтесь к движению Open Source: Инструменты
Описанные в этом руководстве инструменты – Apache Commons Text, Jsoup, HtmlUtils от Spring и unbescape – являются открытыми проектами. Они развиваются силами сообщества и доступны для использования в ваших проектах.
Полезные материалы
- StringEscapeUtils (API Apache Commons Text 1.9) – использование Apache Commons Text для работы с HTML.
- OWASP Java HTML Sanitizer | OWASP Foundation – защита от уязвимостей в HTML с помощью OWASP Sanitizer.
- jsoup: Java HTML parser – jsoup для парсинга, очистки и скрепинга HTML.
- GitHub – OWASP/java-html-sanitizer – настраиваемый HTML-санитайзер на GitHub.
- HtmlUtils (API Spring Framework 6.1.3) – HtmlUtils от Spring для работы с HTML в Spring-приложениях.