Existe-t-il une expression régulière qui peut supprimer complètement une balise HTML? En passant, j'utilise Java.Comment supprimer une balise HTML dans Java
Répondre
Vous devez utiliser un analyseur HTML à la place. J'aime htmlCleaner, car il me donne une jolie version imprimée du HTML.
Avec htmlCleaner vous pouvez faire:
TagNode root = htmlCleaner.clean(stream);
Object[] found = root.evaluateXPath("//div[id='something']");
if(found.length > 0 && found instanceof TagNode) {
((TagNode)found[0]).removeFromTree();
}
Merci de m'avoir indiqué htmlCleaner :) – exhuma
Avons-nous besoin d'une bibliothèque pour utiliser ce code? Et root.evaluateXPath ("// div [id = 'quelquechose']"); dans ce "quelque chose" pourrait être n'importe quel id rite? s'il vous plaît, faites-moi savoir. merci –
No. Les expressions régulières ne peuvent pas par définition Parse HTML.
Vous pouvez utiliser une regex à s/<[^>]*\>//
ou quelque chose de naïf comme ça mais ce sera insuffisant, surtout si vous êtes intéressé par la suppression du contenu des tags.
Comme le dit une autre affiche, utilisez un analyseur HTML réel.
Si vous avez juste besoin de supprimer les balises, vous pouvez utiliser cette expression régulière:
content = content.replaceAll("<[^>]+>", "");
Il va supprimer les balises uniquement, mais pas d'autres choses HTML. Pour les choses plus complexes, vous devriez utiliser l'analyseur.
EDIT: Pour éviter les problèmes avec les commentaires HTML, vous pouvez effectuer les opérations suivantes:
content = content.replaceAll("<!--.*?-->", "").replaceAll("<[^>]+>", "");
Puisque vous n'utilisez aucun des caractères de viande '.','^'et' $ ', les drapeaux' s'- et 'm' peuvent être omis. –
Cette regex est susceptible de provoquer des altérations si le code HTML contient des commentaires XML avec des caractères "<' or '>" incorporés. –
Par ailleurs, si votre intention est de affichage au client entrée contrôlée par l'utilisateur, vous pouvez également il suffit de remplacer tous <
par <
et tous >
par >
. De cette façon, le HTML ne sera pas interprété tel quel par l'application du client (le webbrowser).
Si vous utilisez JSP en tant que technologie d'affichage, vous pouvez utiliser le c:out
de JSTL pour cela. Il va échapper toutes les entités HTML par défaut. Par exemple,
<c:out value="<script>alert('XSS');</script>" />
n'affichera PAS l'alerte, mais montrera simplement la chaîne actuelle telle quelle.
vous pouvez utiliser ce code simple pour supprimer toutes les balises html ...
htmlString.replaceAll("\\<.*?\\>", ""))
Cela supprimera uniquement les balises d'ouverture et laissera les balises de fermeture non manipulées. – jlordo
Je ne ferais jamais un travail comme ça par moi-même - l'analyse de HTML en texte brut est vraiment un job mec .. – jebbie
Cela a fonctionné pour moi mais peut-être dépend de la complexité des balises, des commentaires, des scripts, etc. pour un cas complexe peut-être une bibliothèque html devrait être mieux. – jmoran
Il est JSoup qui est une bibliothèque java fait pour la manipulation HTML. Regardez la méthode clean()
et l'objet WhiteList
. Solution facile à utiliser!
WOW, vous monsieur, vraiment fait ma journée, j'aime ça, OUI! Markdownj, Markdown4J, htmlCleaner .. tout d'eux est ***** désolé .. JSoup est le seul et unique où vous réalisez vraiment cela avec un one-liner: Chaîne plain = new HtmlToPlainText(). GetPlainText (Jsoup.parse (html)); – jebbie
Un code plus court serait 'String texte en clair = Jsoup.parse (html) .text();' – jrarama
@jrarama - Pas du tout. 'Jsoup.parse (html) .text()' supprime toutes les balises et les espaces, vous laissant seulement une longue ligne de texte, tandis que 'new HtmlToPlainText(). GetPlainText (Jsoup.parse (html))' formate le texte d'une manière simpliste, en gardant les sauts de ligne, les paragraphes, les puces, etc. – isapir
Vous n'avez besoin d'aucun analyseur HTML. Le code ci-dessous supprime tous les commentaires HTML:
htmlString = htmlString.replaceAll("(?s)<!--.*?-->", "");
- 1. comment supprimer la balise html dans l'iphone lors de l'analyse?
- 2. Comment puis-je supprimer des attributs d'une balise HTML?
- 3. Supprimer HTML supprimer l'aligment en utilisant Java
- 4. Comment pouvons-nous supprimer la balise html en utilisant Jquery?
- 5. Comment supprimer tag html dans une chaîne?
- 6. HTML personnalisation Sélectionner une balise
- 7. XSLT créer une nouvelle balise HTML
- 8. Balise de sélection HTML
- 9. Créer une balise HTML en PHP
- 10. Expression régulière trouver une phrase pas dans une balise HTML
- 11. Convertir une balise HTML en minuscules
- 12. échapper url sur une balise html
- 13. En Python, comment supprimer la balise "root" dans un extrait de code HTML?
- 14. Comment supprimer une balise XML pour la propriété de liste
- 15. Comment supprimer cette balise en php?
- 16. Balise d'entrée HTML onSubmit
- 17. Comment supprimer la balise CDATA d'un XElement?
- 18. Comment empêcher Java XML Transformer utilisant la méthode "HTML" d'ajouter une balise <META>?
- 19. balise d'ancrage HTML Comprendre
- 20. Recherche d'une balise HTML dans l'application Phonegap
- 21. Comment inclure Silverlight sur une page HTML avec balise d'objet?
- 22. Définition de la balise html à suivre avec une autre balise html donnée avec TinyMCE
- 23. Une balise d'objet HTML peut-elle être placée à l'intérieur d'une balise de formulaire HTML?
- 24. jQuery: Insérer HTML de la balise « title » dans une « durée » d'une balise H2
- 25. balise html dans les variables php
- 26. expression régulière supprimer balise de commentaire
- 27. Comment obtenir la balise html à l'écran?
- 28. Google Directions API - obtenir une réponse XML sans balise HTML
- 29. Comment supprimer html listbox border?
- 30. Comment remplacer la balise HTML regex dans SQL Server?
taper votre titre dans la zone de recherche, je suis arrivé ce qui suit: http://stackoverflow.com/search?q=How+to+remove+HTML+tag + in + Java ... n'avez-vous pas eu la même chose pendant que vous posiez la question? – kdgregory
Je n'ai trouvé aucun doublon. Ces questions concernent l'extraction de texte à partir de HTML: http://stackoverflow.com/questions/240546/removing-html-from-a-java-string http: // stackoverflow.com/questions/832620/stripping-html-tags-in-java – tangens