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

Format d'échange (XML, JSON...) Java Discussion :

Sérialisation avec JAXB et des éléments CDATA


Sujet :

Format d'échange (XML, JSON...) Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut Sérialisation avec JAXB et des éléments CDATA
    Bonsoir la team,

    je vous sollicite car je ne comprend pas comment utiliser la sérialisation sur mon exemple. Je vous explique :

    Voici un exemple d'un fichier XML:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <MON_FICHIER>
    	<MA_BALISE>mes élements</MA_BALISE>
    </MON_FICHIER>
    Pour avoir des accents dans mon fichier XML il me faut une balise CDATA pour avoir le fichier XML :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?>
    <MON_FICHIER>
    	<MA_BALISE><![CDATA[mes élements]]></MA_BALISE>
    </MON_FICHIER>
    Pour cela, j'utilise le code suivant dans ma classe Java pour formatter ma structure XML:

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
     
     
    .... 
     
    ByteArrayOutputStream out = new ByteArrayOutputStream();
          com.sun.org.apache.xml.internal.serialize.XMLSerializer serializer = getXMLSerializer(cdataNodes, bos);
     
    // ObjectFactory ma_structure_xml -> contient mon arbre XML déjà initialisé
    xmlParser.getMarshaller().marshal(ma_structure_xml, serializer.asContentHandler());
     
    ....
     // Méthode générique de sérialisation
      private com.sun.org.apache.xml.internal.serialize.XMLSerializer getXMLSerializer(String[] cDataElements, OutputStream cOut) {
          // This code is from a sample online: http://jaxb.java.net/faq/JaxbCDATASample.java
          // configure an OutputFormat to handle CDATA
          com.sun.org.apache.xml.internal.serialize.OutputFormat of = new com.sun.org.apache.xml.internal.serialize.OutputFormat();
     
          // specify which of your elements you want to be handled as CDATA.
          // The use of the '^' between the namespaceURI and the localname
          // seems to be an implementation detail of the xerces code.
          // When processing xml that doesn't use namespaces, simply omit the
          // namespace prefix as shown in the third CDataElement below.
          of.setCDataElements(cDataElements); // example : "^baz" for node <baz>
     
          // set any other options you'd like
          of.setPreserveSpace(true);
          of.setIndenting(true);
     
          // create the serializer
          com.sun.org.apache.xml.internal.serialize.XMLSerializer serializer = new com.sun.org.apache.xml.internal.serialize.XMLSerializer(of);
          serializer.setOutputByteStream(cOut);
     
          return serializer;
      }
    J'ai trouvé ce code sur le net, mais je ne comprend pas 2 choses:
    - 1) comment doit être utiliser OutputStream cOut en paramètre de la méthode getXMLSerializer ()?
    - 2) comment ensuite récupérer un string à partir de la variable "serializer" après l'utilisation de getMarshaller ?


    Pour celle ou celui qui a déjà utilisé ce genre de chose ça doit paraître évident, mais je bloque dessus depuis quelques temps.

    Merci d'avance pour votre aide.

    Berni.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    200
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 200
    Points : 66
    Points
    66
    Par défaut
    Pour répondre à mes questions:

    - 1) comment doit être utiliser OutputStream cOut en paramètre de la méthode getXMLSerializer ()?

    -> cOut est en fait un élément initialisé en dehors de la fonction.


    - 2) comment ensuite récupérer un string à partir de la variable "serializer" après l'utilisation de getMarshaller ?

    -> Pas besoin de récupérer le string "sérialisé". En fait, cOut sera initialisé lors de l'utilisation du serializer via:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlParser.getMarshaller().marshal(message, serializer.asContentHandler());
    Berni.

Discussions similaires

  1. [JAXB] Problème d'ordre des éléments avec JAXB
    Par blessed1213 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 07/04/2014, 12h43
  2. Réponses: 0
    Dernier message: 09/06/2010, 10h08
  3. Réponses: 2
    Dernier message: 25/02/2010, 18h04
  4. Réponses: 7
    Dernier message: 28/05/2008, 10h48
  5. Afficher des éléments avec swing
    Par ToTo13 dans le forum AWT/Swing
    Réponses: 4
    Dernier message: 05/04/2007, 16h45

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