Maison  >  Article  >  Java  >  Comment conserver les sauts de ligne lors de la conversion de HTML en texte à l'aide de Jsoup ?

Comment conserver les sauts de ligne lors de la conversion de HTML en texte à l'aide de Jsoup ?

DDD
DDDoriginal
2024-10-31 20:37:29230parcourir

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

Préserver les sauts de ligne lors de la conversion HTML en texte à l'aide de Jsoup

Lors de la conversion de HTML en texte brut à l'aide de jsoup, il est possible de conserver les sauts de ligne crucial pour maintenir la lisibilité et la structure du résultat. Par défaut, la méthode text() de jsoup ne conserve pas les sauts de ligne présents dans le code HTML.

Solution :

Pour conserver efficacement les sauts de ligne, utilisez br2nl() méthode, qui intègre les améliorations suivantes :

  1. Préserver les éléments existants Nouvelles lignes : Si le HTML d'origine contient des caractères de nouvelle ligne (n), ils sont conservés dans la sortie.
  2. Convertir
    et

    Tags : Les sauts de ligne sont introduits en ajoutant n au contenu de
    balises. De plus, nn est ajouté au début du contenu de

    balises pour signifier de nouveaux paragraphes.

  3. Post-traitement : Le HTML modifié est rendu et toutes les nouvelles lignes échappées restantes (\n) sont converties en nouvelles lignes réelles (n). Pour garantir une gestion correcte des autres caractères spéciaux, la chaîne résultante est nettoyée à l'aide de Jsoup.clean().

Utilisation :

<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>

Sortie :

hello world
yo googlez

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn