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

Langage Java Discussion :

XMLEncoder et valeurs par défaut


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut XMLEncoder et valeurs par défaut
    Hello,

    J'utilise maintenant un XMLEncoder pour créer mon XML de configuration.

    J'ai un Object:
    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
    public class Config01{
     
        private boolean booleanP = false;
        private Boolean booleanS = false;
     
        private byte byteS = 0;
     
        private Byte byteP = 0;
     
        private short shortS = 0;
        private Short shortP = 0;
     
        private int integerS = 0;
        private Integer integerP = 0;
     
        private long longS = 0;
     
        private float floatS = 0;
     
        private double doubleS = 1.0;
        private Double doubleP = 1.0;
     
        private String string = "aaa";
     
        private int[] tabIntP = {1,2,3};
     
        private Double[] tabDoubleS = {1.1,2.2,3.3};
     
        private String[] tabString = {"I","am","nothing"};
     
        public Config01()  {
        }
    }
    Ensuite, je créé le XML avec cette méthode:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    public static void createDefaultXML(String fileName, Object configurationObject) throws FileNotFoundException{
     
            XMLEncoder encoder = new XMLEncoder(new FileOutputStream(fileName));
            try {
                encoder.writeObject(configurationObject);
                System.out.println("Fichier créé");
            } finally {
                encoder.close();
            }
        }
    Seulement mon problème est que si je l'appel comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    createDefaultXML("output.xml",new Config01());
    ça ne me créé rien dans le XML. Ca me donne ça:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <?xml version="1.0" encoding="UTF-8"?> 
    <java version="1.6.0_01" class="java.beans.XMLDecoder"> 
     <object class="Config01"/> 
    </java>
    Il faut que je spécifie les valeurs par défaut avant de créer le XML, comme cela:
    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
    Config01 config01 = new Config01();
     
            config01.setBooleanP(true);
            config01.setBooleanS(true);
            config01.setByteP((byte)5);
            config01.setByteS((byte)6);
            config01.setDoubleP((double)45);
            config01.setDoubleS((double)46);
            config01.setFloatS((float)5.2);
            config01.setIntegerP(456);
            config01.setIntegerP(47);
            config01.setLongS(8);
            config01.setShortP((short)22);
            config01.setShortS((short)23);
            config01.setString("OK");
            config01.setTabDoubleS(new Double[] {(double)1,(double)2,(double)3,(double)4,(double)5,(double)6});
            config01.setTabIntP(new int[] {9,8,7,6,5});
            config01.setTabString(new String[] {"I","am","an","array","!"});
     
            Configuration.createDefaultXML("output.xml",config01);
    et là c'est nickel!
    Mais moi je veut pas devoir faire ca, je veux qu'il prenne les valeures par défaut de l'objet... Comment je peux faire?

    Je suis assez clair??

    Merci d'avance!

    A+

  2. #2
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Ne t'inquiète pas : si ton bean respecte le format bean, le XMLEncoder prend bien les valeurs par défaut, même lorsqu'elles ne sont pas enregistrées dans le XML, ce qui tient à première vue du miracle, mais est tout à fait normal à la réflexion.

    En son langage imagé la javadoc de XMLEncoder l'explique très bien :
    The XMLEncoder class uses a redundancy elimination algorithm internally so that the default values of a Bean's properties are not written to the stream.
    Pratique, non ?

  3. #3
    Membre éclairé Avatar de ploxien
    Inscrit en
    Février 2006
    Messages
    467
    Détails du profil
    Informations personnelles :
    Âge : 40

    Informations forums :
    Inscription : Février 2006
    Messages : 467
    Par défaut
    Hello,

    Tu dis:
    le XMLEncoder prend bien les valeurs par défaut
    Mais tu site la javadoc:
    the default values of a Bean's properties are not written to the stream
    qui dit le contraire non??

    Ou j'ai pas compris?

    Et si c'est la cas, tu as une idée ou se situe mon erreur??

    Merci, A+

  4. #4
    Expert confirmé
    Avatar de le y@m's
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2005
    Messages
    2 636
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Produits et services télécom et Internet

    Informations forums :
    Inscription : Février 2005
    Messages : 2 636
    Par défaut
    Comme indiqué dans la Javadoc (et cité par gifffftane), lors de la sérialisation XML, les attributs ayants leur valeur par défaut ne sont PAS sérialisé.

    Il n'y a rien à faire contre ça puisque c'est inhérent à l'algorithme de sérialisation XML du XMLEncoder (à part écrire ton propre algorithme de sérialisation XML).

    Sinon, regarde du coté d'une API tierce telle que XStream (cf La sérialisation XML facile avec l'API XStream) qui, peut-être (à vérifier), répond à ta problématique.
    Je ne répondrai à aucune question technique par MP.

    Pensez aux Tutoriels et aux FAQs avant de poster ;) (pour le java il y a aussi JavaSearch), n'oubliez pas non plus la fonction Rechercher.
    Enfin, quand une solution a été trouvée à votre problème
    pensez au tag :resolu:

    Cours Dvp : http://ydisanto.developpez.com
    Blog : http://yann-disanto.blogspot.com/
    Page perso : http://yann-disanto.fr

  5. #5
    Membre Expert
    Avatar de gifffftane
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 354
    Détails du profil
    Informations personnelles :
    Localisation : France, Loire (Rhône Alpes)

    Informations forums :
    Inscription : Février 2007
    Messages : 2 354
    Par défaut
    Oui, et je précise que, si elles ne sont pas sérialisées, elles sont bien prises en compte ; donc, bien qu'elles ne soient pas écrites dans le flux XML, tu les retrouveras à la relecture.

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 06/07/2004, 17h46
  2. Valeur par défaut dun DBLookupcombobox
    Par lol_adele dans le forum Bases de données
    Réponses: 2
    Dernier message: 13/05/2004, 09h08
  3. Valeur par défaut dans une table objet
    Par Ricky81 dans le forum Oracle
    Réponses: 12
    Dernier message: 18/03/2004, 11h52
  4. Réponses: 2
    Dernier message: 18/10/2003, 14h42
  5. Unique + valeur par défaut
    Par ketalie dans le forum Outils
    Réponses: 4
    Dernier message: 02/07/2003, 15h29

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