Remplacer des caractères en entités HTML en java
Je veux remplacer certains caractères avec leurs entités HTML dans une réponse HTML à l'intérieur d'un filtre. Les personnages comprennent <
, >
, &
. Je ne peux pas utiliser replaceAll()
comme il remplacera tous les personnages, même ceux qui font partie de balises HTML.
Quelle est la meilleure approche pour le faire?
Si une chaîne unique a été créé, qui contient un mélange de balises HTML et autonome des caractères tels que
Mon application les frontières ne m'autorise pas à le faire plus tôt 🙁
Mais il suffit de penser - si c'était possible pour ce faire de manière fiable avec entièrement formé de chaînes, vous ne seriez pas le pour l'encodage des navigateurs web serait de l'utiliser quelle que soit la technique magique est de distinguer les balises de texte général.
C'est ce que je dois faire. pour l'instant ce que je fais est de traverser le HTML, caractère par caractère et par la recherche de '<' et '>'. Considérant que la balise (en ignorant les attributs), je suis le vérifier en pré-définis liste des tags. Si le match n'a pas trouvé je suis le codage à la fois '<' et '>'. Je n'ai pas le temps, il est une bonne approche...
<
, alors il est probablement trop tard. Pouvez-vous ne pas de codage HTML, la chaîne avant d'être inclus à l'intérieur des balises?Mon application les frontières ne m'autorise pas à le faire plus tôt 🙁
Mais il suffit de penser - si c'était possible pour ce faire de manière fiable avec entièrement formé de chaînes, vous ne seriez pas le pour l'encodage des navigateurs web serait de l'utiliser quelle que soit la technique magique est de distinguer les balises de texte général.
C'est ce que je dois faire. pour l'instant ce que je fais est de traverser le HTML, caractère par caractère et par la recherche de '<' et '>'. Considérant que la balise (en ignorant les attributs), je suis le vérifier en pré-définis liste des tags. Si le match n'a pas trouvé je suis le codage à la fois '<' et '>'. Je n'ai pas le temps, il est une bonne approche...
OriginalL'auteur user1448652 | 2012-06-11
Vous devez vous connecter pour publier un commentaire.
De java que vous pouvez essayer, Apache Commons Lang (ancien v2)
StringEscapeUtils.escapeHtml()
.ou avec des communes-lang3:
StringEscapeUtils.escapeHtml4()
.Veuillez noter que ce convertit également
à
àà
& cesSimple, propre et fonctionne très bien en Groovy.
Aussi à noter: si vous êtes (déjà) à l'aide d'un framework web, il ya une bonne chance une fonction similaire est déjà intégré dans le cadre. Le printemps, par exemple, a HtmlUtils.htmlEscape(), documentée ici: docs.printemps.io/printemps/docs/actuel/javadoc de l'api/org/...
Cela a maintenant déménagé à commons.apache.org/proper/commons-text
OriginalL'auteur sangupta
Si vous êtes à l'aide d'une technologie telle que la JSTL, vous pouvez tout simplement imprimer la valeur à l'aide
<c:out value="${myObject.property}"/>
et il sera automatiquement échappé.L'attribut
escapeXml
esttrue
par défaut.http://docs.oracle.com/javaee/5/jstl/1.1/docs/tlddocs/
OriginalL'auteur adarshr