Heim  >  Artikel  >  Java  >  Wie bleiben Zeilenumbrüche beim Konvertieren von HTML in Text mit Jsoup erhalten?

Wie bleiben Zeilenumbrüche beim Konvertieren von HTML in Text mit Jsoup erhalten?

DDD
DDDOriginal
2024-10-31 20:37:29147Durchsuche

How to Preserve Line Breaks When Converting HTML to Text Using Jsoup?

Zeilenumbrüche bei der HTML-zu-Text-Konvertierung mit Jsoup beibehalten

Beim Konvertieren von HTML in einfachen Text mit Jsoup können Zeilenumbrüche beibehalten werden entscheidend für die Aufrechterhaltung der Lesbarkeit und Struktur der Ausgabe. Standardmäßig behält die text()-Methode von jsoup keine im HTML-Code vorhandenen Zeilenumbrüche bei.

Lösung:

Um Zeilenumbrüche effektiv beizubehalten, verwenden Sie br2nl() Methode, die die folgenden Verbesserungen beinhaltet:

  1. Vorhandene Zeilenumbrüche beibehalten: Wenn der ursprüngliche HTML-Code Zeilenumbrüche (n) enthält, bleiben diese in der Ausgabe erhalten.
  2. Konvertieren
    und

    Tags: Zeilenumbrüche werden durch Anhängen von n an den Inhalt von
    eingeführt. Tags. Zusätzlich wird dem Inhalt von

    nn vorangestellt. Tags zur Kennzeichnung neuer Absätze.

  3. Nachbearbeitung: Der geänderte HTML-Code wird gerendert und alle verbleibenden maskierten Zeilenumbrüche (\n) werden in tatsächliche Zeilenumbrüche (n) konvertiert. Um die ordnungsgemäße Verarbeitung anderer Sonderzeichen sicherzustellen, wird die resultierende Zeichenfolge mit Jsoup.clean() bereinigt.

Verwendung:

<code class="java">import org.jsoup.Jsoup;
import org.jsoup.nodes.Document;

public class LineBreakPreserver {

    public static String br2nl(String html) {
        if (html == null) {
            return html;
        }

        Document document = Jsoup.parse(html);
        document.outputSettings(new Document.OutputSettings().prettyPrint(false));
        document.select("br").append("\n");
        document.select("p").prepend("\n\n");
        String s = document.html().replaceAll("\\n", "\n");
        return Jsoup.clean(s, "", Whitelist.none(), new Document.OutputSettings().prettyPrint(false));
    }

    public static void main(String[] args) {
        String html = "<!DOCTYPE HTML PUBLIC \"-//W3C//DTD HTML 4.0 Transitional//EN \">" +
                "<HTML> <HEAD> <TITLE></TITLE> <style>body{ font-size: 12px;font-family: verdana, arial, helvetica, sans-serif;}</style> </HEAD> <BODY><p><b>hello world</b></p><p><br><b>yo</b> <a href=\"http://google.com\">googlez</a></p></BODY> </HTML> ";

        String result = br2nl(html);
        System.out.println(result);
    }
}</code>

Ausgabe:

hello world
yo googlez

Das obige ist der detaillierte Inhalt vonWie bleiben Zeilenumbrüche beim Konvertieren von HTML in Text mit Jsoup erhalten?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn