2016-01-19 9 views
7

Ich war mit diesem Code versucht, von HTML-Elementen meinen Text vollständig zu reinigen:Jsoup saubere Methode lässt   Elemente

Jsoup.clean(preparedText, Whitelist.none()) 

Leider die   Elemente nicht entfernen es hat. Ich dachte, dass es es mit einem Leerzeichen ersetzt, genauso wie es die · durch einen mittleren Punkt ("& middot;") ersetzt.

Sollte ich eine andere Methode verwenden, um diese Funktionalität zu erreichen?

+0

Warum ersetzen Sie es nicht mit 'Ersetzen' Methode? – Maroun

+1

@MarounMaroun, ersetzen Methode funktioniert, aber ich frage mich, warum Whitelist.none() nicht damit umgehen. –

Antwort

2

Vom Jsoup docs:

White- definieren, was HTML (Elemente und Attribute) durch der Reiniger zu ermöglichen. Alles andere ist entfernt.

Die Whitelist betrifft also nur Tags und Attribute.   ist weder ein Tag noch ein Attribut. Es ist einfach die HTML-Codierung für ein Sonderzeichen. Wenn Sie von der Codierung in den normalen Text übersetzen wollen, können Sie beispielsweise verwenden, die ausgezeichnete apache commons lang library oder verwenden Sie die Jsoup unescapeEntities method:

System.out.println(Parser.unescapeEntities(doc.toString(), false)); 

Nachtrag:

Die Übersetzung von · auf „·“ bereits passiert, wenn Sie analysieren den HTML-Code. Es scheint nicht mit der sauberen Methode zu tun zu haben.

+0

Das ist richtig, aber was ich versuche zu verstehen ist, warum es einen Unterschied zwischen & middot; und   in der Art, wie Jsoup diese Elemente behandelt (in seiner sauberen Methode). –

+0

In der Tat ist das seltsam. Vielleicht sollten Sie ein Problem im GITHUB https://github.com/jhy/jsoup/issues des JSOUP-Projekts ansprechen – luksch