web-dev-qa-db-fra.com

Convertir un caractère HTML en texte à l'aide de la bibliothèque standard Java

Je voudrais reconvertir certains caractères HTML en texte à l'aide de la bibliothèque standard Java. Je me demandais si une bibliothèque atteindrait mes objectifs?

/**
 * @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) {

    }
}
37
Cheok Yan Cheng

Je pense que les méthodes StringEscapeUtils.escapeHtml () et unescapeHtml () de la bibliothèque Jakarta Commons Lang sont ce que vous recherchez. Voir http://commons.Apache.org/proper/commons-lang/javadocs/api-3.1/org/Apache/commons/lang3/StringEscapeUtils.html .

56
Bill.D

Ici, vous devez simplement ajouter le fichier jar dans lib jsoup dans votre application, puis utiliser ce code.

import org.jsoup.Jsoup;

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

Lien pour télécharger jsoup: http://jsoup.org/download

26
jem

Java.net.URLDecoder traite uniquement avec le format MIME application/x-www-form-urlencoded (par exemple, "% 20" représente un espace), pas avec les entités de caractères HTML . Je ne pense pas qu'il y ait quelque chose sur la plate-forme Java pour cela. Vous pouvez écrire votre propre classe d’utilitaires pour effectuer la conversion, comme celui-ci .

7
Zach Scrivena

Le décodeur d'URL ne doit être utilisé que pour décoder les chaînes à partir des URL générées par les formulaires HTML du type mime "application/x-www-form-urlencoded". Cela ne prend pas en charge les caractères HTML.

Après une recherche j'ai trouvé un traduire classe dans le HTML Parser bibliothèque.

5
Rich

Vous pouvez utiliser la classe org.Apache.commons.lang.StringEscapeUtils:

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

Ça fonctionne.

4
Bruno Barros

Je ne connais aucun moyen de le faire en utilisant la bibliothèque standard. Mais je connais et utilise cette classe qui traite des entités HTML.

"HTMLEntities est une classe Java Open Source qui contient un ensemble de méthodes statiques (htmlentities, unhtmlentities, ...) permettant de convertir des caractères spéciaux et étendus en entités HTML et inversement."

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

2
rogeriopvl

Comme @jem l'a suggéré, il est possible d'utiliser jsoup.

Avec jSoup 1.8.3, il est possible d'utiliser la méthode Parser.unescapeEntities qui conserve le code HTML d'origine.

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

Il semble que dans certaines versions précédentes, cette méthode ne soit pas présente.

0
Daniele

Ou vous pouvez utiliser unescapeHtml4:

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

Ce code imprime la ligne: GUÍA TELEFÓNICA