Préservation des sauts de ligne lors de l'utilisation de Jsoup

1. Vue d'ensemble

Dans ce didacticiel, nous examinerons brièvement les différentes façons de préserver les sauts de ligne lors de l'utilisation de Jsoup pour analyser le HTML en texte brut . Nous verrons comment conserver les sauts de ligne associés aux caractères de nouvelle ligne ( \ n ), ainsi que ceux associés à

et

2. Préservation \ n lors de l' analyse du texte HTML

Jsoup supprime le caractère de nouvelle ligne ( \ n ) par défaut du texte HTML et remplace chaque nouvelle ligne par un caractère d'espace.

Cependant, pour empêcher Jsoup de supprimer les caractères de nouvelle ligne, nous pouvons modifier OutputSetting de Jsoup et désactiver pretty-print. Si pretty-print est désactivé, les méthodes de sortie HTML ne reformateront pas la sortie et la sortie ressemblera à l'entrée:

Document.OutputSettings outputSettings = new Document.OutputSettings(); outputSettings.prettyPrint(false);

De plus, nous pouvons utiliser Jsoup # clean pour supprimer toutes les balises HTML de la chaîne:

String strHTML = "Hello\nworld"; String strWithNewLines = Jsoup.clean(strHTML, "", Whitelist.none(), outputSettings);

Voyons à quoi ressemble notre chaîne de sortie strWithNewLines :

assertEquals("Hello\nworld", strWithNewLines);

Par conséquent, nous pouvons voir qu'en appelant Jsoup # clean avec Whitelist # none et en désactivant le paramètre de sortie pretty-print de Jsoup, nous pouvons conserver les sauts de ligne associés au caractère de nouvelle ligne.

Voyons ce que nous pouvons faire d'autre!

3. Préservation des sauts de ligne associés à

et

Mots clés

Lors du nettoyage du texte HTML à l'aide de la méthode Jsoup # clean , il supprime les sauts de ligne créés par des balises HTML telles que

et

Pour conserver les sauts de ligne associés à ces balises, nous devons d'abord créer un document Jsoup à partir de notre chaîne HTML:

String strHTML = "Hello

World

Paragraph

"; Document jsoupDoc = Jsoup.parse(strHTML);

Ensuite, nous ajoutons un caractère de nouvelle ligne avant le

et

Document.OutputSettings outputSettings = new Document.OutputSettings(); outputSettings.prettyPrint(false); jsoupDoc.outputSettings(outputSettings); jsoupDoc.select("br").before("\\n"); jsoupDoc.select("p").before("\\n");

Ici, nous avons utilisé la méthode select de Jsoup Document avec la méthode before pour ajouter le caractère de nouvelle ligne.

Après cela, nous obtenons la chaîne HTML de jsoupDoc en conservant les nouvelles lignes d'origine:

String str = jsoupDoc.html().replaceAll("\\\\n", "\n");

Enfin, nous appelons Jsoup # clean avec Whitelist # none et le paramètre de sortie pretty-print désactivé:

String strWithNewLines = Jsoup.clean(str, "", Whitelist.none(), outputSettings);

Et notre chaîne de sortie strWithNewLines ressemble à ceci :

assertEquals("Hello\nWorld\nParagraph", strWithNewLines);

Ainsi, en ajoutant

et

4. Conclusion

Dans ce court article, nous avons appris à conserver les sauts de ligne associés aux caractères de nouvelle ligne ( \ n ) et

et

Comme toujours, tous ces exemples de code sont disponibles à l'adresse over sur GitHub.