Maison > Java > javaDidacticiel > le corps du texte

Comment conserver les sauts de ligne lors de la conversion de HTML en texte brut avec Jsoup ?

DDD
Libérer: 2024-11-03 11:02:29
original
234 Les gens l'ont consulté

How to Preserve Line Breaks When Converting HTML to Plain Text with Jsoup?

Préserver les sauts de ligne lors de la conversion de HTML en texte brut avec Jsoup

Lors de la conversion de contenu HTML en texte brut, il est essentiel de conserver les sauts de ligne pour plus de lisibilité . Par défaut, la méthode text() de Jsoup supprime les sauts de ligne, perturbant potentiellement le formatage de votre sortie. Heureusement, il existe une solution de contournement qui exploite la méthode getWholeText() pour conserver les sauts de ligne.

Utiliser getWholeText() pour conserver les sauts de ligne

La méthode getWholeText() dans Jsoup renvoie l'intégralité du contenu textuel d'un document, y compris les sauts de ligne. Pour utiliser cette méthode, vous pouvez suivre ces étapes :

  1. Analyser votre chaîne HTML à l'aide de Jsoup :

    <code class="java">Document doc = Jsoup.parse(htmlString);</code>
    Copier après la connexion
  2. Parcourir les éléments du document et extraire le texte :

    <code class="java">for (Element element : doc.getAllElements()) {
        text += element.getWholeText().trim();
        if (element.tagName().equals("br")) {
            text += "\n";
        }
    }</code>
    Copier après la connexion

En ajoutant un saut de ligne après chaque balise
, vous pouvez vous assurer que les sauts de ligne sont conservés dans votre texte de sortie.

Solution avancée : méthode br2nl()

La solution ci-dessus fonctionne efficacement mais peut être améliorée en incorporant la méthode utilitaire suivante :

<code class="java">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));
}</code>
Copier après la connexion

Cette méthode préserve non seulement la ligne pauses de
et

balises, mais garantit également que les nouvelles lignes dans le code HTML d'origine sont conservées. Pour ce faire, il ajoute sélectivement des sauts de ligne aux éléments HTML, puis effectue une substitution d'expression régulière pour remplacer les sauts de ligne échappés par de véritables nouvelles lignes.

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!

source:php.cn
Déclaration de ce site Web
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
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal