Abarone.it Logo

Java - Estrarre testo da file html

Da html a testo semplice

Problema
Si ha dell'HTML in una stringa Java e si vuole estrarre il testo semplice escludendo il codice HTML.

Soluzione

Si può utilizzare una libreria Java di nome Jsoup (http://jsoup.org/) che permette di lavorare con l'HTML con estrema semplicità. Essa è in grado di:
Parsare HTML da un URL, File o stringa
Trovare e estrarre dati utilizzando il DOM o i selettori CSS
Manipolare elementi, attributi e testo
Per utilizzare questa libreria è sufficiente scaricare il file .jar da includere nel Class Path come External JAR (per Eclipse).
Nel caso del problema in oggetto, è utile fare un esempio. Avendo dell'html in una stringa:

String html = "

Un esempio di recupero del solo testo.

";
Per ottenere "Un esempio di recupero del solo testo." è necessario utilizzare il codice:

String textOnly = Jsoup.parse(html).text();

Vediamo un esempio piu complesso, dove passiamo un oggetto di tipo MimeMultipart al nostro metodo:

  1. private String getTextFromMimeMultipart(MimeMultipart mimeMultipart) throws MessagingException, IOException {
  2. String result = "";
  3. int count = mimeMultipart.getCount();
  4. for (int i = 0; i < count; i++) {
  5. BodyPart bodyPart = mimeMultipart.getBodyPart(i);
  6. if (bodyPart.isMimeType("text/plain")) {
  7. result = result + "\n" + bodyPart.getContent();
  8. break;
  9. } else if (bodyPart.isMimeType("text/html")) {
  10. String html = (String) bodyPart.getContent();
  11. result = result + "\n" + Jsoup.parse(html).text();
  12. } else if (bodyPart.getContent() instanceof MimeMultipart) {
  13. result = result + getTextFromMimeMultipart((MimeMultipart) bodyPart.getContent());
  14. }
  15. }
  16. return result;
  17. }

barone.antonio@libero.it