2009-03-01 34 views
36

一部のHTML文字をJava標準ライブラリを使用してテキストに変換したいと思います。どんな図書館が私の目的を達成するのか疑問に思っていたのですか?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) { 

    } 
} 

答えて

53

私はJakarta Commons LangライブラリのStringEscapeUtils.escapeHtml()メソッドとunescapeHtml()メソッドがあなたが探しているものだと思います。 http://commons.apache.org/proper/commons-lang/javadocs/api-3.1/org/apache/commons/lang3/StringEscapeUtils.htmlを参照してください。

+1

のようなURLを簡単に作成できます。最新のURL :http://commons.apache.org/lang/api-2.6/org/apache/commons/lang/StringEscapeUtils.html – Reu

+0

死んだ馬を打ち負かすのではなく、OPが求めていたのはHTMLエンティティ間の翻訳方法でしたと "プレーン"テキスト(これは私のASCIIですが、YMMVです)。上記のJakartaのlibにはunescapeHTML(そしてescapeHTML)があり、これがトリックです。 URLDecoderは、URLエンコーディング(GETパラメータなど)のパーセントエンコーディングでも動作します。 – jjohn

+0

Androidの場合はどのようにサポートされますか? – CoDe

2

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

「にhtmlentitiesは、HTML entititiesとその逆に特殊なと拡張文字を変換する静的メソッド(にhtmlentities、unhtmlentities、...)のコレクションが含まれてオープンソースのJavaクラスです。」

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

7

java.net.URLDecoderディールのみapplication/x-www-form-urlencoded MIME形式でないHTML character entitiesと、(例えば、 "20%" とは、空間を表します)。私はそれのためにJavaプラットフォーム上に何かがあるとは思わない。 this oneのように、変換を行う独自のユーティリティクラスを作成することができます。

5

URLデコーダは、 "application/x-www-form-urlencoded" MIMEタイプのhtmlフォームで生成されたURLからの文字列のデコードにのみ使用してください。これはhtml文字をサポートしていません。

searchの後に、HTML Parserライブラリ内にTranslateクラスが見つかりました。

+0

とても良いライブラリです。 Miguel

24

ここでは、アプリケーションの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ダウンロードする:@jemが示唆したようにhttp://jsoup.org/download

+0

これは受け入れられる回答である必要があります。すばらしいJsoupよりも読み込みが速くて簡単なライブラリはありません。 – Grux

+0

素晴らしいです。これは答えです。 –

0

、jsoup使用することが可能です。

jSoup 1.8.3を使用すると、元のhtmlを保持するParser.unescapeEntitiesのメソッドを使用することができます。

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

一部の以前のリリースでは、この方法は存在しないようです。

1

あなたはクラスorg.apache.commons.lang.StringEscapeUtilsを使用することができます:それは働いている

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

+0

私はこの解決策を好む。可能であれば、私はApache libsを使うことをお勧めします。 (私の意見) –

関連する問題