web-dev-qa-db-ja.com

Java標準ライブラリを使用してHTML文字をテキストに戻す

Java標準ライブラリを使用して、いくつかのHTML文字をテキストに変換したいと思います。ライブラリが目的を達成するかどうか疑問に思いましたか?

/**
 * @param args the command line arguments
 */
public static void main(String[] args) {
    // TODO code application logic here

    // "Happy & Sad" in HTML form.
    String s = "Happy & Sad";
    System.out.println(s);

    try {
        // Change to "Happy & Sad". DOESN'T WORK!
        s = Java.net.URLDecoder.decode(s, "UTF-8");
        System.out.println(s);
    } catch (UnsupportedEncodingException ex) {

    }
}
39
Cheok Yan Cheng

Apache Commons LangライブラリのStringEscapeUtils.unescapeHtml3()およびunescapeHtml4()メソッドが探しているものだと思います。 https://commons.Apache.org/proper/commons-text/javadocs/api-release/org/Apache/commons/text/StringEscapeUtils.html を参照してください。

58
Bill.D

ここでは、アプリケーションのlib jsoupにjarファイルを追加して、このコードを使用するだけです。

import org.jsoup.Jsoup;

public class Encoder {
    public static void main(String args[]) {
        String s = Jsoup.parse("<Français>").text();
        System.out.print(s);
    }
}

ダウンロードjsoupへのリンク: http://jsoup.org/download

28
jem

Java.net.URLDecoderapplication/x-www-form-urlencoded MIME形式(たとえば、「%20」はスペースを表す)、 HTML文字エンティティ ではありません。 Javaプラットフォームには何も存在しないと思います。 this one のように、変換を行う独自のユーティリティクラスを作成できます。

7
Zach Scrivena

URLデコーダは、「application/x-www-form-urlencoded」MIMEタイプのhtmlフォームによって生成されたURLから文字列をデコードするためにのみ使用する必要があります。これはhtml文字をサポートしていません。

検索 の後、 HTMLパーサー ライブラリ内に 翻訳 クラスが見つかりました。

5
Rich

クラスorg.Apache.commons.lang.StringEscapeUtilsを使用できます。

String s = StringEscapeUtils.unescapeHtml("Happy & Sad")

動いています。

4
Bruno Barros

標準ライブラリを使用してそれを行う方法を知りません。しかし、htmlエンティティを扱うこのクラスを知っていて使用しています。

"HTMLEntitiesは、特殊文字および拡張文字をHTMLエンティティに変換する静的メソッド(htmlentities、unhtmlentitiesなど)のコレクションを含むオープンソースJavaクラスです。 versa。」

http://www.tecnick.com/public/code/cp_dpage.php?aiocp_dp=htmlentities

2
rogeriopvl

または、unescapeHtml4を使用できます。

    String miCadena="GUÍA TELEFÓNICA";
    System.out.println(StringEscapeUtils.unescapeHtml4(miCadena));

このコードは次の行を出力します:GUÍATELEFÓNICA

@jemが示唆したように、jsoupを使用することは可能です。

JSoup 1.8.3では、元のhtmlを保持するメソッドParser.unescapeEntitiesを使用できます。

import org.jsoup.parser.Parser;
...
String html = Parser.unescapeEntities(original_html, false);

以前のリリースでは、このメソッドは存在しないようです。

0
Daniele