2016-01-19 22 views
7

stavo cercando di utilizzare questo codice per pulire il mio testo interamente da elementi HTML:Jsoup metodo pulito lascia   elementi

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

Purtroppo non ha rimosso gli elementi  . Ho pensato che lo sostituisse con uno spazio bianco, allo stesso modo in cui sostituisce lo · con un punto centrale ("& middot;").

Devo utilizzare un altro metodo per ottenere questa funzionalità?

+0

Perché non lo sostituisci usando il metodo 'replace'? – Maroun

+1

@MarounMaroun, il metodo di sostituzione funzionerà, ma mi chiedo perché Whitelist.none() non l'abbia gestito. –

risposta

2

Dal Jsoup docs:

Whitelists definire cosa HTML (elementi e attributi) per consentire attraverso il più pulito. Tutto il resto viene rimosso.

Quindi la whitelist riguarda solo tag e attributi.   non è né un tag né un attributo. È semplicemente la codifica html per un personaggio speciale. Se si desidera tradurre dalla codifica al testo normale si può utilizzare ad esempio l'ottimo apache commons lang library o utilizzare il Jsoup unescapeEntities method:

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

Addendum:

La traduzione da · a "·" già accade quando si analizza l'html. Non sembra avere a che fare con il metodo pulito.

+0

Questo è corretto, ma quello che sto cercando di capire è perché c'è una differenza tra & middot; e   nel modo in cui Jsoup gestisce questi elementi (nel suo metodo pulito). –

+0

In effetti questo è strano. Forse dovresti sollevare un problema sul github del progetto JSOUP https://github.com/jhy/jsoup/issues – luksch