-
XML et html entities
Bonjour
Je recois un XML qui contient du HTML encodé en entities (caractéres spéciaux remplacés par des petites chaines commencant par &). A la sortie de mon parseur ca ce retransforme en HTML propre. Comment faire pour soit sortir du parseur ce qu'il y avais vraiment dans ma balise (j'utilise SAX) ou pour reconvertir une chaine HTML avec ces caractéres étranges. J'ai essayé avec une classe HTMLEntities trouvés sur java.net mais ca ne fonctionne pas. Merci.
-
Salut,
Je ne comprend pas très bien ce qui te pose problème !- Est-ce la lecture du XML ?
- Est-ce la conversion des "&...;" en caractère "normal" ?
- Est-ce que tu veux convertir des caractères en "&...;" ?
a++
-
En fait je veux convertir du <> en &... ou récuperer mon &... d'origine a la sortie du parseur qui semble transformer le &... en <>
-
Ton parseur SAX transforme les entités en texte, c'est normal il fait son boulot ;)
Si ensuite tu veux convertir ton texte en entités html, tu peux utiliser :
https://htmlentities.dev.java.net/
qui te permet de transformer du texte en html (et vice versa)
J'avais cherché il y a quelques temps une méthode dans le jdk pour faire cela, mais je n'avais rien trouvé (ce que je trouve assez étonnant).
Petite remarque : pour transformer du xml en html, c'est souvent plus facile d'écrire une feuille xslt qu'un traitement ad-hoc en java (mais ça ne s'applique peut être pas à ton cas, tu n'as rien précisé sur la nature de la transformation).
-
J'ai deja essayé cette classe et ca ne fonctionne pas, la methode htmlentities ne fonctionne pas, elle me redonne exactement la même chaine. Et j'ai fait des dizaines de tests. Ce qui est étrange c'est que les méthodes ne changeant que certains caractéres fonctionnent mais la plus importante ne donne rien. Le xslt ne m'interesse pas le xml devra être retraité par un client.
-
Pour les < et > tu dois utiliser la méthode htmlAngleBrackets
J'avais utilisé la classe fournie sur le lien que j'ai te t'ai donné et j'avais modifié le code pour qu'il traite tous les caractères d'un coup (je sais pas si tu es allé voir le code, il suffit de rajouter des entrées dans la map utilisée pour les conversions). Je pense (et j'espère !) que ça ne pose pas de pb de droit car le code est sous LGPL.
-
Tu veux dire que la methode gére tout sauf les bracket? Argl voila pourquoi j'y arrivais pas, effectivement je vais un peu modifier ca. A priori ca pose pas de problémes pour une licence LGPL