Java で HTML をエスケープする

Zeeshan Afridi 2023年10月12日
  1. HTML タグをエスケープする方法
  2. Java で HTML をエスケープする方法
Java で HTML をエスケープする

この記事では、Java で HTML 文字と記号をエスケープする方法について説明します。Apache の commons-text および StringEscapeUtils.escapeHtml4(str) メソッドを使用して、Java で HTML 記号および文字をエスケープできます。

HTML タグをエスケープする方法

タグとその特性を特定して、Java プログラムで HTML タグを回避およびエスケープします。 <head> タグがあるとしましょう。 < で始まり > で終わるものは、特定のシナリオではタグになることがわかっています。

したがって、HTML タグのこれらの特性を利用して、HTML タグをエスケープできます。それをよりよく理解するために、以下の例を見てみましょう。

<html lang="en-US">
<head>
    <meta http-equiv="content-type" content="text/html; charset=utf-8" />
    <link rel="shortcut icon" href="https://www.w3schools.com/images/w3schools_green.jpg" type="image/x-icon">
</head>

上記の例では、<link><HTML><head><meta> などの複数の HTML タグがあります。これらのタグは HTML タグであり、それぞれがブラウザにとって特別な意味を持っています。

これをよりよく理解するには、任意の Web ページに移動し、ページを右クリックして[検査]を選択し、さまざまな HTML タグで構成された Web ページの構造を確認します。

HTML では、すべてのタグは < 以下と > 以上の記号で囲まれています。したがって、これらの <> 記号には特定の意味があることに注意することが重要です。特定のコードでこれらの HTML 文字の代わりに HTML エンティティ名を使用すると、ブラウザはタグを非表示にしません。解釈する代わりに実際のテキストを置き換えます。

したがって、< をエンティティ名&lt に置き換えます。そして、> をエンティティ名&gt に置き換えます。

&lt;html lang=&quot;en-US&quot;&gt;
&lt;head&gt;
    &lt;meta http-equiv=&quot;content-type&quot; content=&quot;text/html; charset=utf-8&quot; /&gt;
    &lt;link rel=&quot;shortcut icon&quot; href=&quot; https://www.w3schools.com/images/w3schools_green.jpg &quot; type=&quot;image/x-icon&quot;&gt;
&lt;/head&gt;

HTML のエスケープについて理解したので、Java で HTML をエスケープする方法を理解しましょう。

Java で HTML をエスケープする方法

このガイドの冒頭で説明したように、サードパーティのサービスである Apache を利用します。これは、米国南西部のネイティブアメリカンの部族にちなんで名付けられたソフトウェアファンデーションです。

Apache の開発者は、開発プロセスを促進するためにいくつかの非常に便利で役立つツールを導入した Apache 用のソフトウェアを構築しました。

これらの便利なツールの 1つは、文字列内の HTML をエスケープするために使用されます。あなたがする必要があるのはあなたの pom.xml ファイルに依存関係を含めることです。

Java で StringEscapeUtils を使用するための Commons-Text 依存関係をインポートする

StringEscapeUtils を使用するには、commons-text の依存関係をインポートする必要があります。

<dependency>
	<groupId>org.apache.commons</groupId>
	<artifactId>commons-text</artifactId>
	<version>3.12</version>
</dependency>
  1. この依存関係を POM に挿入してから、次の手順に従います。
  2. Java で HTML をエスケープするために使用する必要のあるメソッドは、StringEscapeUtils.escapeHtml4()StringEscapeUtils.unescapeHtml4() です。
  3. このコードを Java コンパイラで記述します。
String html = "<html lang=\"en-US\">\r\n"
    + "<head>\r\n"
    + "    <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\r\n"
    + "    <link rel=\"shortcut icon\" href=\" https://www.w3schools.com/images/w3schools_green.jpg \" type=\"image/x-icon\">\r\n"
    + "</head>";

// This is used to escape html
String escapedOutput = StringEscapeUtils.escapeHtml4(html);
System.out.println(escapedOutput); // printing the output

String html は、上記の例 1 で使用した HTML コードスニペットです。

このプログラムの中核となるのは StringEscapeUtils.escapeHtml4(html) であり、このコンテキストで HTML をエスケープする役割を果たします。StringEscapeUtils クラスにはさまざまなメソッドがありますが、escapeHtml4() を利用します。

ここで、上記のコードを実行しようとすると、この記事の最初のセクションで見たエスケープされた出力が表示されます。

Java で元のエスケープされていないデータを取得する

同じクラスの Apache StringEscapeUtils を使用して、文字列を元の形式に簡単にエスケープ解除できます。そのためには、Java コンパイラで次のコードを使用する必要があります。

String html = "<html lang=\"en-US\">\r\n"
    + "<head>\r\n"
    + "    <meta http-equiv=\"content-type\" content=\"text/html; charset=utf-8\" />\r\n"
    + "    <link rel=\"shortcut icon\" href=\" https://www.w3schools.com/images/w3schools_green.jpg \" type=\"image/x-icon\">\r\n"
    + "</head>";

String escapedOutput = StringEscapeUtils.escapeHtml4(html);
String original = StringEscapeUtils.unescapeHtml4(escapedOutput);
System.out.println(original);

上記のコードでは、escapeHtml4() の直後にある StringEscapeUtils クラスの unescapeHtml4() メソッドを使用して、エスケープされたデータをエスケープされていないデータに変換します。

上記のコードを実行すると、この出力が得られます。

<html lang="en-US">
<head>
	<meta http-equiv="content-type" content="text/html; charset=utf-8" />
	<link rel="shortcut icon"
href=" https://www.w3schools.com/images/w3schools_green.jpg " type="image/x-icon"> </head>
著者: Zeeshan Afridi
Zeeshan Afridi avatar Zeeshan Afridi avatar

Zeeshan is a detail oriented software engineer that helps companies and individuals make their lives and easier with software solutions.

LinkedIn