伺服器端應用程式有時需要解析 HTML 字元。這時轉義/取消轉義(Unescape)過程就派上用場了。在本教程中,我們將演示幾種在 Java 中取消轉義 HTML 字元的方法。我們將研究一些可以處理此任務的可用庫。
在 JVM 中處理 HTML 符號可能比較棘手,因為 Java 字串中的這些符號代表兩個或多個字元。為了讓 JVM 正確解釋這些字元,我們需要對它們進行轉義或取消轉義的方法。
我們總是可以自己編寫程式碼來處理未轉義的 HTML 字元,但這個過程會花費時間。它也容易出錯。相反,我們可以使用可以處理該任務的現有 Java 庫。以下小節中的示例程式碼測試了使用各種 Java 庫將轉義的 HTML 符號轉換為“未轉義”字元。
1. 透過 Apache Commons 的StringEscapeUtils解除轉義
Apache Commons是一個流行的 Java 庫,其目標和重點是重用元件。它的StringEscapeUtils類有許多方便的方法,其中包括
org.apache.commons.text包中的StringEscapeUtils.unescapeHtml4() :
String expectedQuote = <font>"\"Hello\" Baeldung"; String escapedQuote = ""Hello" Baeldung"; Assert.assertEquals(expectedQuote, StringEscapeUtils.unescapeHtml4(escapedQuote)); String escapedStringsWithHtmlSymbol = "<p><strong>Test sentence in bold type.</strong></p>"; String expectedStringsWithHtmlSymbol = "<p><strong>Test sentence in bold type.</strong></p>"; Assert.assertEquals(expectedStringsWithHtmlSymbol, StringEscapeUtils.unescapeHtml4(escapedStringsWithHtmlSymbol));
|
2. 透過 Spring Framework 的HtmlUtils解除轉義
Spring Framework 是一個可靠的 Java 平臺,具有開發應用程式的各種基礎設施支援。它提供了 HtmlUtils.htmlUnescape()函式,用於轉換轉義的 HTML 字元。它可以在org.springframework.web.util包下找到:
String expectedQuote = <font>"\"Code smells\" -Martin Fowler"; String escapedQuote = ""Code smells" -Martin Fowler"; Assert.assertEquals(expectedQuote, HtmlUtils.htmlUnescape(escapedQuote)); String escapedStringsWithHtmlSymbol = "<p>Loren Ipsum is a popular paragraph.</p>"; String expectedStringsWithHtmlSymbol = "<p>Loren Ipsum is a popular paragraph.</p>"; Assert.assertEquals(expectedStringsWithHtmlSymbol, HtmlUtils.htmlUnescape(escapedStringsWithHtmlSymbol));
|
3.透過 Unbescape 的HtmlEscape進行轉義
Unbescape庫用於轉義和取消轉義多種格式的資料,其中包括 HTML、JSON 和 CSS。以下示例顯示瞭如何透過 HtmlEscape.unescapeHtml() 方法取消轉義 HTML 字元 和標籤:
String expectedQuote = <font>"\"Carpe diem\" -Horace"; String escapedQuote = ""Carpe diem" -Horace"; Assert.assertEquals(expectedQuote, HtmlEscape.unescapeHtml(escapedQuote)); String escapedStringsWithHtmlSymbol = "<p><em>Pizza is a famous Italian food. Duh.</em></p>"; String expectedStringsWithHtmlSymbol = "<p><em>Pizza is a famous Italian food. Duh.</em></p>"; Assert.assertEquals(expectedStringsWithHtmlSymbol, HtmlEscape.unescapeHtml(escapedStringsWithHtmlSymbol));
|
4. 透過 Jsoup 的Entities.unescape()解除轉義
Jsoup庫適用於各種 HTML 操作。其 Java HTML 解析器為 HTML 和 XML 需求提供了廣泛的支援。Entities.unescape ()是一個函式,其主要目標是對帶有轉義 HTML 字元的字串進行反轉義:
String expectedQuote = <font>"\"Jsoup\" is another strong library"; String escapedQuote = ""Jsoup" is another strong library"; Assert.assertEquals(expectedQuote, Entities.unescape(escapedQuote)); String escapedStringsWithHtmlSymbol = "<p>It simplifies working with real-world <strong>HTML</strong> and <strong>XML</strong></p>"; String expectedStringsWithHtmlSymbol = "<p>It simplifies working with real-world <strong>HTML</strong> and <strong>XML</strong></p>"; Assert.assertEquals(expectedStringsWithHtmlSymbol, Entities.unescape(escapedStringsWithHtmlSymbol));
|