it-swarm.com.de

wie konvertiere ich HTML-Text in einfachen Text?

bei Freunden muss ich die Beschreibung aus der URL analysieren, wo geparste Inhalte nur wenige HTML-Tags haben. Wie kann ich sie also in einfachen Text konvertieren?.

20
MGSenthil

HTML-Tags einfach loszuwerden ist einfach:

// replace all occurrences of one or more HTML tags with optional
// whitespace inbetween with a single space character 
String strippedText = htmlText.replaceAll("(?s)<[^>]*>(\\s*<[^>]*>)*", " ");

Aber die Anforderungen sind leider nie so einfach:

Normalerweise benötigen <p>- und <div>-Elemente eine gesonderte Behandlung, es können cdata-Blöcke mit >-Zeichen (z. B. Javascript) vorhanden sein, die die Regex usw. durcheinander bringen.

21

Sie können diese einzelne Zeile verwenden, um die HTML-Tags zu entfernen und als Nur-Text anzuzeigen.

htmlString=htmlString.replaceAll("\\<.*?\\>", "");
8
Kandha

Ja, Jsoup ist die bessere Option. Gehen Sie wie unten beschrieben vor, um den gesamten HTML-Text in einfachen Text umzuwandeln.

String plainText= Jsoup.parse(yout_html_text).text();
4
Ranjit

Verwenden Sie einen HTML-Parser wie htmlCleaner

Für eine detaillierte Antwort: So entfernen Sie ein HTML-Tag in Java

4
ankitjaininfo

Ich würde empfehlen, den rohen HTML-Code durch jTidy zu analysieren, was eine Ausgabe ergeben sollte, gegen die Sie Xpath-Ausdrücke schreiben können. Dies ist der robusteste Weg, HTML zu finden, den ich gefunden habe.

1
Jon Freedman

Wenn Sie wie eine Browseranzeige parsen möchten, verwenden Sie:

import net.htmlparser.jericho.*;
import Java.util.*;
import Java.io.*;
import Java.net.*;

public class RenderToText {
    public static void main(String[] args) throws Exception {
        String sourceUrlString="data/test.html";
        if (args.length==0)
          System.err.println("Using default argument of \""+sourceUrlString+'"');
        else
            sourceUrlString=args[0];
        if (sourceUrlString.indexOf(':')==-1) sourceUrlString="file:"+sourceUrlString;
        Source source=new Source(new URL(sourceUrlString));
        String renderedText=source.getRenderer().toString();
        System.out.println("\nSimple rendering of the HTML document:\n");
        System.out.println(renderedText);
  }
}

Ich hoffe, dass dies helfen wird, die Tabelle auch im Browser-Format zu analysieren.

Danke, Ganesh

0

Ich brauchte eine Klartextdarstellung von HTML, die FreeMarker-Tags enthielt. Das Problem wurde mir mit einer JSoup-Lösung übergeben, aber JSoup konnte sich den FreeMarker-Tags entziehen und brach damit die Funktionalität. Ich habe auch htmlCleaner (sourceforge) ausprobiert, aber das ließ den HTML-Header und den Stilinhalt (Tags entfernt). http://stackoverflow.com/questions/1518675/open-source-Java-library-for-html-to-text-conversion/1519726#1519726

Mein Code: 

return new net.htmlparser.jericho.Source(html).getRenderer().setMaxLineLength(Integer.MAX_VALUE).setNewLine(null).toString();

Die Variable maxLineLength stellt sicher, dass Zeilen nicht mit 80 Zeichen künstlich umbrochen werden. Die setNewLine(null) verwendet die gleichen neuen Zeilenzeichen als Quelle.

0
John Camerin