Preservare le interruzioni di riga quando si utilizza Jsoup

1. Panoramica

In questo tutorial, esamineremo brevemente i diversi modi di preservare le interruzioni di riga quando si utilizza Jsoup per analizzare l'HTML in testo normale . Tratteremo come conservare le interruzioni di riga associate ai caratteri di nuova riga ( \ n ), oltre a quelli associati a

e

2. Preservare \ n durante l'analisi del testo HTML

Jsoup rimuove il carattere di nuova riga ( \ n ) per impostazione predefinita dal testo HTML e sostituisce ogni nuova riga con uno spazio.

Tuttavia, per impedire a Jsoup di rimuovere i caratteri di nuova riga, possiamo modificare OutputSetting di Jsoup e disabilitare pretty-print. Se pretty-print è disabilitato, i metodi di output HTML non riformatteranno l'output e l'output sarà simile all'input:

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

Inoltre, possiamo usare Jsoup # clean per rimuovere tutti i tag HTML dalla stringa:

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

Vediamo come appare la nostra stringa di output strWithNewLines :

assertEquals("Hello\nworld", strWithNewLines);

Pertanto, possiamo vedere che chiamando Jsoup # clean con Whitelist # none e disabilitando l'impostazione di output di stampa graziosa di Jsoup, siamo in grado di preservare le interruzioni di riga associate al carattere di nuova riga.

Vediamo cos'altro possiamo fare!

3. Preservare le interruzioni di riga associate a

e

Tag

Durante la pulizia del testo HTML utilizzando il metodo Jsoup # clean , rimuove le interruzioni di riga create dai tag HTML come

e

Per preservare le interruzioni di riga associate a questi tag, dobbiamo prima creare un documento Jsoup dalla nostra stringa HTML:

String strHTML = "Hello

World

Paragraph

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

Successivamente, anteponiamo un carattere di nuova riga prima di

e

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

Qui, abbiamo utilizzato il metodo di selezione del documento Jsoup insieme al metodo before per anteporre il carattere di nuova riga.

Dopodiché, otteniamo la stringa HTML da jsoupDoc mantenendo le nuove righe originali:

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

Infine, chiamiamo Jsoup # clean con Whitelist # none e l'impostazione di output pretty-print disabilitata:

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

E la nostra stringa di output strWithNewLines ha il seguente aspetto:

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

Quindi, anteponendo

e

4. Conclusione

In questo breve articolo, abbiamo imparato come conservare le interruzioni di riga associate ai caratteri di nuova riga ( \ n ) e al

e

Come sempre, tutti questi esempi di codice sono disponibili su GitHub.