Page JSP qui renvoie du xml

Résolu
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 - 16 juil. 2007 à 12:39
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 - 17 juil. 2007 à 11:15
Salut,

J'ai une page JSP (status.jsp) qui est appelée en boucle depuis une autre (results.jsp) par l'objet XMLHttpRequest pour connaitre l'état d'avancement d'un traitement. La page status renvoie à results une réponse sous forme xml contenant des éléments de réponse (nouveaux résultats obtenus, calcul complet fini...)

Mon soucis : dans la page status, je n'arrive pas à formatter correctement la source.

Si j'écris quelquechose comme :

<%@ page language= "java" import="java.lang.*">
<%
...code qui vérifie le status des calculs et qui renvoie les résultats en xml...
%>

la réponse est bien reçue mais considérée comme malformé (on dirait que les retours à la ligne ne conviennent pas)

Si je fait une requête direct depuis un navigateur, j'obtiens le message d'erreur suivant :

Erreur d'analyse XML : instruction de traitement XML pas au début d'une entité externe
Emplacement : http://monsite.com/status.jsp
Numéro de ligne 2, Colonne 1 :
<?xml version="1.0" encoding="iso-8859-1"?><results><NbResultats>10</NbResultats> 1 </results>
^

Par contre si j'écris (pas de retour à la ligne entre les blocs) :

<%@ page language ="java" import="java.lang.*"><%

...code qui vérifie le status des calculs et qui renvoie les résultats en xml...

%>

la réponse est bien reçue et correctement traitée.

Si je fait une requête direct depuis un navigateur, j'obtiens bien ma réponse :


<?xml version="1.0" encoding="iso-8859-1"?>
<results>
<NbResultats>10</NbResultats>
1
</results>

Quelqu'un sait-il d'où peut venir le problème ?
Merci.

2 réponses

cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
16 juil. 2007 à 19:41
Ca venait de la ligne <?xml version="1.0" encoding="iso-8859-1"?>
En enlevant l'instruction qui crée cette ligne, tout marche.

J'avais une instruction qui faisait :
response.setContentType("text/xml; charset=ISO-8859-1");

puis une autre qui faisait :
out.write("<?xml version="1.0" encoding="iso-8859-1"?>");

Je voulais faire bien, dans les normes et tout le toutim.
Mais en enlevant le prologue du fichier xml et en ne concervant que le contentType, ça passe.

Si quelqu'un voit pourquoi...
Sinon je déclare que les normes c'est porte nawak...
3
cs_AlexN Messages postés 694 Date d'inscription lundi 5 décembre 2005 Statut Membre Dernière intervention 8 janvier 2014 19
17 juil. 2007 à 11:15
J'ai compris pourquoi pour ceux que ça interresse :
Il faut placer le prologue au tout début de la jsp, c'est plus propre, dans la mesure où certains taglib généraient des caractères blancs, Le xml était considéré comme invalide. Le problème est similaire à celui des header en php (la génération de header doit être fait en tout début de fichier pour éviter la production de caractères blancs).
3
Rejoignez-nous