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 :
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.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 :
<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.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.
waaw thnx !! i’ve been thinking about looking for it !
svp j’ai un probleme lors de la serialisation j’ai pas trouvé le personne.xml y’a rien en sortie lorsque j’execute, pouvez vous m’aider svp
Est ce qu’il s’agit de cet exemple de sérialisation? sinon est ce que tu peux me partager ton exemple? Est ce que tu as vérifier le répertoire du projet, car l’exemple donné de sérialisation met le fichier sur le répertoire du projet.