2016-01-19 17 views
7

Próbowałem przy użyciu tego kodu, aby oczyścić mój tekst w całości z elementów HTML:Jsoup czysty metoda pozostawia   elementy

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

Niestety nie usuwają   elementy. Myślałem, że zastąpi to białą spacją, tak samo jak zastąpi ona · środkową kropką ("& middot;").

Czy należy użyć innej metody w celu uzyskania tej funkcji?

+0

Dlaczego nie zastąpisz go metodą "replace"? – Maroun

+1

@MarounMaroun, metoda replace będzie działać, ale zastanawiam się, dlaczego Whitelist.none() nie poradził sobie z tym. –

Odpowiedz

2

Z Jsoup docs:

Whitelists określić co HTML (elementy i atrybuty), aby umożliwić poprzez sprzątaczka. Cała reszta jest usunięta.

Tak więc biała lista dotyczy jedynie znaczników i atrybutów.   nie jest ani tagiem, ani atrybutem. Jest to po prostu kodowanie html dla znaku specjalnego. Jeśli chcesz przetłumaczyć z kodowaniem do normalnego tekstu można użyć na przykład doskonała apache commons lang library lub użyj Jsoup unescapeEntities method:

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

Uzupełnienie:

Translacja z · do „·” już się dzieje, gdy parsujesz HTML. Wydaje się, że nie ma to związku z czystą metodą.

+0

Zgadza się, ale staram się zrozumieć, dlaczego istnieje różnica między & middot; i   w sposobie, w jaki Jsoup obsługuje te elementy (w swojej czystej metodzie). –

+0

Rzeczywiście jest to dziwne. Może powinieneś zgłosić problem dotyczący github projektu JSOUP https://github.com/jhy/jsoup/issues – luksch