15 votes

Comment supprimer une balise HTML en Java

Existe-t-il une expression régulière capable de supprimer complètement une balise HTML ? Au fait, j'utilise Java.

24voto

Simon Points 101

Il y a JSoup qui est une bibliothèque Java destinée à la manipulation du HTML. Regardez la page clean() et la méthode WhiteList objet. Une solution facile à utiliser !

20voto

tangens Points 17733

Vous devriez plutôt utiliser un analyseur HTML. J'aime htmlCleaner Je n'ai pas besoin d'être un expert, car cela me permet d'obtenir une version imprimée de l'HTML.

Avec htmlCleaner, vous pouvez le faire :

TagNode root = htmlCleaner.clean( stream );
Object[] found = root.evaluateXPath( "//div[id='something']" );
if( found.length > 0 && found instanceof TagNode ) {
    ((TagNode)found[0]).removeFromTree();
}

6voto

Andrey Adamovich Points 9404

Si vous souhaitez simplement supprimer des balises, vous pouvez utiliser cette expression régulière :

content = content.replaceAll("<[^>]+>", "");

Il ne supprimera que les balises, mais pas les autres éléments HTML. Pour des choses plus complexes, vous devriez utiliser l'analyseur.

EDITAR : Pour éviter les problèmes liés aux commentaires HTML, vous pouvez procéder comme suit :

content = content.replaceAll("<!--.*?-->", "").replaceAll("<[^>]+>", "");

4voto

Moishe Lettvin Points 7590

Les expressions régulières ne peuvent pas, par définition, analyser le code HTML.

Vous pouvez utiliser une expression rationnelle pour s/<[^>]*\>// ou quelque chose de naïf comme cela, mais ce sera insuffisant, surtout si vous souhaitez supprimer le contenu des balises.

Comme l'a dit une autre personne, utilisez un véritable analyseur HTML.

2voto

Saeid Zebardast Points 316

Vous n'avez pas besoin d'un analyseur HTML. Le code ci-dessous supprime tous les commentaires HTML :

htmlString = htmlString.replaceAll("(?s)<!--.*?-->", "");

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