IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Développement Web en Java Discussion :

Problème encodage flux xml (CDATA) dans String


Sujet :

Développement Web en Java

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 18
    Points
    18
    Par défaut Problème encodage flux xml (CDATA) dans String
    Bonjour,

    voila j'ai un problème d'encodage dans un flux xml sur un retour d'un webservice. Tout d'abord voici un bout de m'a XSD :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     
    <xs:complexType name="ActeMetier">
    	<xs:sequence>
    		<xs:element name="dateCreation" type="xs:string"/>
    		<xs:element name="identifiantActe" type="xs:string"/>
                    <xs:element name="detailsXML" type="xs:string" minOccurs="0"/>

    Le champ qui me pose problème est "detailsXML". C'est un champ que je récupère dans une base oracle "CLOB", en fait c'est un xml stocké dedans. Je le récupère via "getCharacterStream()" que je stock dans un StringBuffer puis string par la suite.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
     
     
            try {
                clobReader = new BufferedReader(clob.getCharacterStream());
                while ((ligne = clobReader.readLine()) != null) {
                    chaine.append(ligne);
                }
            }
            catch (IOException ioe) {
                throw new ErreurTechnique("Erreur lors de la lecture Clob");
            }
            finally {
                if (null != clobReader) {
                    try {
                        clobReader.close();
                    }
                    catch (IOException e) {
                        LOGGER.warn("Erreur lors de la fermeture du Clob reader");
     
                    }
                }
     
            }
            return chaine.toString();

    Sous SOAPUI pas de problème, mon champs est bien dans une balise CDATA
    ex : <tns:detailsXML><![CDATA[ <toto.xml><exemple> ]]></tns:detailsXML>

    Mais quand je regarde dans mes logs et sous TCPmonitor je n'ai pas du tout ce résultat :
    ex: <tns:detailsXML>>&lt;toto.xml>&lt;exemple> ]]></tns:detailsXML>

    La balise CDATA a disparue! Le problème est que mon client reçoit sous cette forme ci dessus et il n'est pas content.

    Pour information, j'utilise cxf et jaxws. Je n'utilise pas JDOM, etc.. pour construire mon xml de retour, c'est automatique. Je gère juste mes classes JAVA. L'architecte de mon projet est partit en vacances et je ne peux pas l'attendre car c'est une anomalie assez urgente pour mon client.

    Auriez vous des idées ?

  2. #2
    Membre du Club
    Femme Profil pro
    Ingénieur intégration
    Inscrit en
    Juin 2010
    Messages
    50
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 36
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Ingénieur intégration
    Secteur : Santé

    Informations forums :
    Inscription : Juin 2010
    Messages : 50
    Points : 51
    Points
    51
    Par défaut
    Je ne suis pas une experte mais il semble que ça vient du buffer. Mais sinon est-ce que tu peux nous donner l'XML que ton programme sort ? Car je ne connais pas la différence entre SOAPUI et TCPMonitor, je suppose que c'est des outils, mais là ce qu'il est important de savoir c'est si ton XML de sortie est correct.

    ça peut être un problème d'encodage qui fait que ton xml est ok mais quand il est transmis il est est modifié car l'encodage ne passe pas.

    En esperant ne pas avoir fait captain obvious...

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    35
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 35
    Points : 18
    Points
    18
    Par défaut
    Le flux xml comment ça ?

    Dans SoapUI je l'ai sous la forme :
    <tns:detailsXML><![CDATA[ <toto.xml><exemple> ]]></tns:detailsXML>

    et sous TCPmonitor (sert à capter les flux sur un port):
    <tns:detailsXML>>&lt;toto.xml>&lt;exemple> ]]></tns:detailsXML>

Discussions similaires

  1. Flux xml / CDATA
    Par pmejob dans le forum XML/XSL et SOAP
    Réponses: 5
    Dernier message: 05/11/2013, 14h45
  2. [SAX] Encodage flux XML
    Par nerazuri85 dans le forum Format d'échange (XML, JSON...)
    Réponses: 2
    Dernier message: 18/07/2012, 16h29
  3. Problème espace dans flux XML lors de unmarshal : outils JDOM et BorlandXML
    Par alextomas dans le forum Format d'échange (XML, JSON...)
    Réponses: 4
    Dernier message: 29/07/2011, 16h41
  4. [C#] retourner flux XML dans String[]
    Par moulefrite dans le forum Windows Forms
    Réponses: 6
    Dernier message: 25/11/2008, 17h05
  5. Problème CDATA dans balise XML
    Par charliejo dans le forum Dynamique
    Réponses: 4
    Dernier message: 12/01/2007, 12h04

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo