Jsoup.propre sans l'ajout d'entités html
Je suis le nettoyage de certains texte des balises HTML (comme <script>
) à l'aide de
String clean = Jsoup.clean(someInput, Whitelist.basicWithImages());
Le problème est qu'il remplace par exemple å
avec å
(ce qui pose des problèmes pour moi, car il n'est pas "pur xml").
Par exemple
Jsoup.clean("hello å <script></script> world", Whitelist.basicWithImages())
rendements
"hello å world"
mais je voudrais
"hello å world"
Est-il un moyen simple pour y parvenir? (I. e. plus simple que de convertir å
retour à å
dans le résultat.)
Vous devez vous connecter pour publier un commentaire.
Vous pouvez configurer Jsoup de s'échapper mode: à l'Aide de
EscapeMode.xhtml
vous donnera de sortie w/o des entités.Ici un extrait qui accepte
str
en entrée, et le nettoie à l'aide deWhitelist.simpleText()
:Il y a déjà des demandes de fonctionnalités sur le site web de Jsoup. Vous pouvez étendre le code source de soi-même par l'ajout d'une nouvelle Carte vide et un nouvel échappement type. Si vous ne voulez pas faire cela, vous pouvez utiliser StringEscapeUtils de apache commons.
<script>alert('Hello');</script>
, vous allez effectivement injecter dangereux HTML et permettre attaque XSS.<script>alert('Hello');</script>
?Réponse de &bmoc fonctionne très bien, mais vous pouvez utiliser une solution plus courte :
Un moyen plus simple de le faire est
J'ai testé et ça marche
Accepté la réponse est à l'aide de
Jsoup.parse
qui semble plus lourd que ce qui se passe dansJsoup.clean
après un rapide coup d'œil à la source.J'ai copié le code source de
Jsoup.clean(...)
et ajout de la ligne pour définir le mode fuite. Cela devrait éviter certaines inutiles les mesures effectuées par la méthode d'analyse car il n'a pas à analyser un ensemble de document html, mais juste la poignée d'un fragment.Analyser le code HTML d'un Document, puis utilisez un Nettoyant pour nettoyer le document et produire d'un autre, obtenir le outputSettings du document et de définir le jeu de caractères approprié et le mode fuite en xhtml, puis transformer le document à une Chaîne. Pas testé, mais devrait fonctionner.
Manière Simple:
Cela permettra d'éliminer TOUS des entités html, y compris les suivants: ', ", & ,< et >. Le EscapeMode.xhtml permet à ces entités.