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érialiser plusieurs instances de la même classe


Sujet :

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

  1. #1
    Membre habitué
    Sérialiser plusieurs instances de la même classe
    Bonjour,

    Voici le code de la classe que je sérialise dans un fichier 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
    35
    36
    37
    38
    39
    40
    41
    @XmlRootElement(name = "Appel")
    @XmlAccessorType (XmlAccessType.FIELD)
    public class TypeAppel {
    	private String id;
        private String typeAppel;
        private String objMail;
     
        public String getId() {
        	Utils u = new Utils();
        	id = u.getGUID();
    		return id;
    	}
     
        public String getTypeAppel() {
            return typeAppel;
        }
     
        public void setTypeAppel(String typeAppel) {
            this.typeAppel = typeAppel;
        }
     
        public String getObjMail() {
            return objMail;
        }
     
        public void setObjMail(String objMail) {
            this.objMail = objMail;
        }
     
        public TypeAppel() {
            this.typeAppel = null;
            this.objMail = null;
        }
     
        public TypeAppel(String typeAppel, String objMail) {
            this.typeAppel = typeAppel;
            this.objMail = objMail;
        }
     
     
    }


    J'ai une deuxième classe qui sert à avoir une liste de types d'appels:
    Code :Sélectionner tout -Visualiser dans une fenêtre à part
    private List<TypeAppel> listTypeAppel = new ArrayList<>();


    J'obtiens donc le code XML suivant:

    Code XML :Sélectionner tout -Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ListTypAppels>
        <TypeAppel>
            <typeAppel>normal</typeAppel>
            <objMail>N</objMail>
        </TypeAppel>
    </ListTypAppels>


    Si un type d'appel est déjà sauvé et qu'il faut en ajouter un nouveau, faut-il recréer le fichier dans son entièreté? Ou, avec JAXB, est-il possible de sérialiser une nouvelle instance de la classe tout en préservant ce qui est déjà dans le fichier? Si oui, pouvez-vous m'éclairer sur la façon de procéder?

    Merci d'avance.
    Paul Van Walleghem

  2. #2
    Modérateur

    Hello,

    Citation Envoyé par Paul Van Walleghem Voir le message
    Si un type d'appel est déjà sauvé et qu'il faut en ajouter un nouveau, faut-il recréer le fichier dans son entièreté?
    Oui. 'Faut dire aussi que ça ne pose aucun problème, donc bon...

    Citation Envoyé par Paul Van Walleghem Voir le message
    Ou, avec JAXB, est-il possible de sérialiser une nouvelle instance de la classe tout en préservant ce qui est déjà dans le fichier?
    Non. En même temps ça servirait à rien.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre habitué
    Merci de votre réponse. Je comprends bien votre réflexion. C'est sans doute moi qui ne vous ai pas exposé le problème correctement, je ne suis pas un spécialiste de Java. Mais en posant la question, j'ai voulu m'assurer de ne pas me tromper dans le raisonnement.

    Ce qui m'étonne dans cette perspective c'est qu'il faille charger un fichier entier uniquement pour lui ajouter quelques données supplémentaires. Côté consommation mémoire, je me demandais s'il y avait mieux...
    Paul Van Walleghem

  4. #4
    Modérateur

    Côté consommation mémoire, tu démarres Java. Alors ton fichier de même pas 1ko, hein...

    De toute façon XML ne permet pas ce genre de chose, à cause de la balise fermante. Pour certains formats de fichiers on peut toujours ajouter à la fin, mais "à la fin" ça veut dire à la fin. Là il y a la balise fermante à la fin, donc pas d'ajout. On réécrit tout.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre habitué
    Ok, merci beaucoup.
    Salutations,
    Paul Van Walleghem