2016-11-03 4 views
4

Ich habe einen Beispielcode wie folgt.Vermeiden Sie das Entfernen von Leerzeichen und Zeilenumbruch beim Parsen von HTML mit jsoup

String sample = "<html> 
<head> 
</head> 
<body> 
This is a sample on    parsing html body using jsoup 
This is a sample on    parsing html body using jsoup 
</body> 
</html>"; 

Document doc = Jsoup.parse(sample); 
String output = doc.body().text(); 

ich die Ausgabe als

This is a sample on parsing html body using jsoup This is a sample on `parsing html body using jsoup` 

Aber ich möchte, dass die Ausgabe als

This is a sample on    parsing html body using jsoup 
This is a sample on    parsing html body using jsoup 

Wie es tun analysieren, so dass ich diese Ausgabe erhalten? Oder gibt es eine andere Möglichkeit, dies in Java zu tun?

Antwort

3

Sie können den hübschen Ausdruck Ihres Dokuments deaktivieren, um die Ausgabe wie gewünscht zu erhalten. Aber Sie müssen auch die .text() zu .html() ändern.

Document doc = Jsoup.parse(sample); 
doc.outputSettings(new Document.OutputSettings().prettyPrint(false)); 
String output = doc.body().html(); 
0

Die HTML-Spezifikation erfordert, dass mehrere Leerzeichen in einem einzigen Leerzeichen zusammengeführt werden. Beim Parsen des Samples eliminiert der Parser daher korrekt die überflüssigen Leerzeichen.

Ich glaube nicht, dass Sie ändern können, wie der Parser funktioniert. Sie könnten einen Vorverarbeitungsschritt hinzufügen, in dem Sie mehrere Leerzeichen mit nicht brechbaren Leerzeichen ( ) ersetzen, die nicht zusammenbrechen. Der Nebeneffekt wäre natürlich, dass diese, na ja, nicht zerbrechlich sind (was egal ist, wenn Sie nur den gerenderten Text verwenden möchten, wie in doc.body(). Text()).

Verwandte Themen