Lijnonderbrekingen behouden bij gebruik van Jsoup

1. Overzicht

In deze tutorial kijken we kort naar de verschillende manieren van het behouden van regeleinden bij het gebruik van Jsoup om HTML naar platte tekst te parseren. We bespreken hoe regeleindes behouden blijven die zijn gekoppeld aan nieuwe regel (\ n) tekens, evenals die geassocieerd met

en

2. Behoud \ n Tijdens het parseren van HTML-tekst

Jsoup verwijdert het newline-teken (\ n) standaard uit de HTML-tekst en vervangt elke nieuwe regel door een spatie.

Om te voorkomen dat Jsoup de newline-tekens verwijdert, kunnen we de Uitgangsinstelling van Jsoup en schakel pretty-print uit. Als pretty-print is uitgeschakeld, zullen de HTML-uitvoermethoden de uitvoer niet opnieuw formatteren en ziet de uitvoer eruit als de invoer:

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

Verder kunnen we gebruik maken van Jsoup#schoon om alle HTML-tags uit de string te verwijderen:

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

Laten we eens kijken wat onze outputstring is strWithNewLines lijkt op:

assertEquals ("Hallo \ nwereld", strWithNewLines);

Daarom kunnen we dat zien door te bellen Jsoup#schoon met Witte lijst#geen en het uitschakelen van de mooie afdruk-uitvoerinstelling van Jsoup, zijn we in staat om de regeleinden te behouden die zijn gekoppeld aan het newline-teken.

Laten we eens kijken wat we nog meer kunnen doen!

3. Behoud van lijnonderbrekingen die verband houden met

en

Tags

Bij het opschonen van de HTML-tekst met de Jsoup#schoon methode, verwijdert het de regeleinden die zijn gemaakt door HTML-tags zoals

en

Om de regeleinden die aan deze tags zijn gekoppeld, te behouden, moeten we eerst een Jsoup maken Document uit onze HTML-string:

String strHTML = "Hallo

Wereld

Paragraaf

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

Vervolgens plaatsen we een teken voor een nieuwe regel vóór de

en

Document.OutputSettings outputSettings = nieuw Document.OutputSettings (); outputSettings.prettyPrint (false); jsoupDoc.outputSettings (outputSettings); jsoupDoc.select ("br"). vóór ("\ n"); jsoupDoc.select ("p"). vóór ("\ n");

Hier hebben we de selecteer methode van Jsoup Document samen met de voordat methode om het teken voor een nieuwe regel vooraf te laten gaan.

Daarna krijgen we de HTML-string van jsoupDoc met behoud van de originele nieuwe regels:

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

Eindelijk bellen we Jsoup#schoon met Witte lijst#geen en de mooie afdrukuitvoerinstelling uitgeschakeld:

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

En onze outputstring strWithNewLines lijkt op:

assertEquals ("Hallo \ nWereld \ nParagraaf", strWithNewLines);

Dus door vooraf te gaan

en

4. Conclusie

In dit korte artikel hebben we geleerd hoe we regeleinden kunnen behouden die zijn gekoppeld aan nieuwe regel (\ n) tekens en de

en

Zoals altijd zijn al deze codevoorbeelden beschikbaar op GitHub.