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 :

<![CDATA[ ]]> pour stocker une image [DOM]


Sujet :

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

  1. #1
    Invité
    Invité(e)
    Par défaut <![CDATA[ ]]> pour stocker une image
    Bonjour, je voudrais stocker une image dans un fichier xml du style :
    <screenshot>
    <author>blabla</author>
    <image type="JPG|PNG|GIF"><![CDATA[Coontenu de l'image]]></image>
    </screenshot>
    Pour cela j'ai écris ces lignes :
    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
     
     // Création du document
                Document document = DocumentBuilderFactory.newInstance().newDocumentBuilder().newDocument();
    // Auteur 
                Element author = document.createElement("author");
                author.setTextContent( System.getProperty("user.name") );
     
     // Tente de lire l'image
                    try {   
                        //ImageInputStream imgis = ImageIO.createImageInputStream( imgpane.getImagePath() );
                        BufferedReader imgis = new BufferedReader( new FileReader( imgpane.getImagePath() ));
                        String line,content="";
                        StringBuffer buff = new StringBuffer();
                        while ( (line = imgis.readLine())!=null )
                            buff.append(line);
     
                        System.out.println(buff.toString());
                        CDATASection cdata = document.createCDATASection( buff.toString() );
                        image.appendChild(cdata);
     
                    } catch (IOException ex) {
                        ex.printStackTrace();
                    }
     
    root.appendChild(author);
                root.appendChild(image);
     
    document.appendChild(root);
     
    Transformer transformer = TransformerFactory.newInstance().newTransformer();
                transformer.setOutputProperty(OutputKeys.ENCODING, "UTF-8");
                transformer.setOutputProperty(OutputKeys.INDENT, "yes");
                transformer.transform(new DOMSource(document), new StreamResult(System.out));
    Mais la résultat n'est pas tout à fait celui attendu :
    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <screenshot>
    <author>moi</author>
    <image><![CDATA["‰PNG]]>
    Dernière modification par Robin56 ; 05/06/2012 à 22h58. Motif: Ajout du préfixe

  2. #2
    Expert éminent
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 54

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Points : 7 103
    Points
    7 103
    Par défaut
    Bonjour,

    il n'est pas possible de mettre dans un document XML des données binaires, et utiliser un <![CDATA[]]> n'y changera rien. Si tu dois absolument intégrer une image dans ton document, il faut passer par un encodage générant du texte, comme Base64 par exemple.

  3. #3
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Merci l'encodage en base64 fonctionne très bien. (pour l'enregistrement du moins.. )

  4. #4
    Membre actif
    Avatar de JMLLB
    Inscrit en
    Septembre 2006
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Septembre 2006
    Messages : 285
    Points : 268
    Points
    268
    Par défaut
    Pour info, l'utilisation de fichiers multi-part MIME peut être utile dans ce cas de figure pour dissocier images lourdes et strucure du document.
    C'est ce qui est fait lorsque tu enregistres un fichier html sous le format MHTML et qui te permet de tout avoir dans un seul document.

    C'est une alternative au fait de référencer tes images dans le corps du documments et les stocker en fin de structure dans une partie "ressources".
    La seconde option de permet de parser directement ton document sans te poser aucune question puisqu'il est entièrement XML.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Image] Classe pour stocker une image JPEG ?
    Par elitost dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 19/01/2006, 13h34
  2. Réponses: 13
    Dernier message: 23/12/2004, 18h01
  3. Comment faire pour afficher une image ds une dbgrid
    Par totomaze dans le forum Bases de données
    Réponses: 2
    Dernier message: 16/10/2004, 15h31
  4. Mkisofs - problème pour créer une image
    Par tomnie dans le forum Applications et environnements graphiques
    Réponses: 4
    Dernier message: 04/08/2004, 11h44

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