5 votes

Java remplace toutes les balises non HTML dans une chaîne de caractères

J'aimerais remplacer toutes les parties d'une chaîne qui ressemblent à des balises si elles ne sont pas des balises HTML valides. Une partie qui a l'air d'une balise est quelque chose qui est enfermé dans <> entre parenthèses. Par exemple. <myemail@email.com> o <hello> mais <br> , <div> et ainsi de suite doivent être conservés.

Avez-vous une idée de la manière d'y parvenir ?

Toute aide est la bienvenue !

des remerciements,

balázs

9voto

dogbane Points 85749

Y JSoup pour nettoyer le HTML.

String cleaned = Jsoup.clean(html, Whitelist.relaxed());

Vous pouvez utiliser l'une des options définies Listes blanches ou vous pouvez en créer un personnalisé dans lequel vous spécifiez les éléments HTML que vous souhaitez autoriser à travers le nettoyeur. Tout le reste est supprimé.


Votre exemple concret serait le suivant :

String html = "one two three <blabla> four <text> five <div class=\"bold\">six</div>";
String cleaned = Jsoup.clean(html, Whitelist.relaxed().addAttributes("div", "class"));
System.out.println(cleaned);

Sortie :

one two three  four  five 
<div class="bold">
 six
</div>

0voto

ManseUK Points 26965

Jetez un coup d'œil à la classe java.util.Scanner - vous pouvez définir un délimiteur et voir si la chaîne correspond à la balise HTML ou non - vous devrez construire un tableau de chaînes qui doivent être ignorées.

0voto

The Ox Points 35

Vous pouvez également inclure des balises de fin dans votre algorithme de comparaison. Vous pouvez donc rechercher une barre oblique (balise de fin html) et la supprimer avant votre comparaison.

0voto

axtavt Points 126632

Si vous le faites pour afficher des données non fiables sur la page web, la simple suppression des balises non valides ne suffit pas. Jetez un coup d'œil à OWASP AntiSamy .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X