la sérialisation XML en java

Après un premier Article « La sérialisation binaire en JAVA », voyons comment peut on sérialiser les objets en XML. Pour cela, on va utiliser l’API Xstream qui représente une bibliothèque JAVA permettant de sérialiser et désérialiser des objets dans des flux XML. Autrement dit, Xstream permet donc d’écrire et de paresser un flux XML.

Cet API est très utilisée du fait qu’elle est très facile dans son utilisation, rapide dans son exécution et surtout elle n’implique aucune modification dans la structure des objets.

Pour mieux comprendre les choses, on va essayer de sérialiser et désérialiser des objets la classe suivante :

public class Personne {

        private String nom;
        private String prenom;

        public String getNom() {
                return nom;
        }
        public void setNom(String nom) {
                this.nom = nom;
        }
        public String getPrenom() {
                return prenom;
        }
        public void setPrenom(String prenom) {
                this.prenom = prenom;
        }
        public String toString()
        {
                return this.nom + " " + this.prenom;
        }
}

Sérialisation
Xstream dispose d’une opération appelé « toXML » permettant de sérialiser un objet en XML. L’exemple suivant montre comment peut on sérialiser un objet personne dans un fichier xml :

import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import personne.Personne;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class Main {

        public static void main(String args[]) {
                XStream xstream = new XStream(new DomDriver());
                Personne pers = new Personne();
                pers.setNom("root");
                pers.setPrenom("khalid");
                try {
                        FileOutputStream fout = new FileOutputStream("personne.xml");
                        xstream.toXML(pers, fout);
                } catch (FileNotFoundException e) {
                        e.printStackTrace();
                }
        }
}

Le contenue du fichier personne.xml est de la forme :

<personne.Personne>
  <nom>root</nom>
  <prenom>khalid</prenom>
</personne.Personne>

Désérialisation
Pour désérialiser les objets, Xstream met à la disposition des développeurs l’opération « fromXML », l’exemple suivant montre comment désérialiser un objet personne depuis le fichier personne.xml :

import java.io.FileInputStream;
import java.io.FileNotFoundException;
import personne.Personne;
import com.thoughtworks.xstream.XStream;
import com.thoughtworks.xstream.io.xml.DomDriver;

public class Main {

        public static void main(String args[])  {
                XStream xstream = new XStream( new DomDriver());
                Personne personne = new Personne();
                try {
                        FileInputStream fin= new FileInputStream("personne.xml");
                        personne = (Personne) xstream.fromXML(fin);
                        System.out.println(personne);
                } catch (FileNotFoundException e) {
                        e.printStackTrace();
                }              
        }
}

Comme vous le voyez le mécanisme de la sérialisation/désérialisation a été trop simplifié avec l’API Xstream, d’où son utilité lors de chargement des fichiers de configuration.

Une question qui se pose est comment peut-on personnaliser la sérialisation (les tags XML par exemple) ? Xstream offre la possibilité de personnaliser la sérialisation en utilisant des annotations, comment faire sera traité dans un nouvel article prochainement incheallah.

A propos de l'auteur

Faut il vraiment porter des lunettes, pour travailler la nuit, sur un terminal vert sur noire, pour être Geek pour devenir root ?