Bonjour,
J'ai rencontré ce problème récemment, en utilisant un parseur DOM.
Voici comment le parseur "voit" un noeud XML contenant une chaîne de caractère, par exemple :
sera interprété de cette manière :
1 2 3
|
-"noeud" (Element)
-"texte" (Text) |
Mais, voici ce qui arrive dès qu'un caractère spécial se faufile dans la chaîne :
<noeud>adresse¶m1¶m2</noeud>
donne l'arbre suivant :
1 2 3 4 5 6 7
|
-"noeud" (Element)
-"adresse" (Text)
-code du caractère '&' (EntityReference)
-"param1" (Text)
-code du caractère '&' (EntityReference)
-"param2" (Text) |
Donc, si tu veux récupérer la chaîne entière, tu dois boucler sur tous les enfants de l'élément en question et les concaténer.
Pour les noeuds Text, récupère la chaîne telle quelle.
Pour les noeuds EntityReference, la chaîne retournée est de type "#123" qui représente le code du caractère en nombre entier. Il faut retrouver le caractère de cette manière :
(char)Integer.parseInt(code.substring(1))
Voilà tout!
Partager