Les Snippets

Connexion

Serialisation et deserialisation d'un objet vers du xml

Niveau requis pour utiliser/comprendre cette source : 1 ( Débutant )
Créé le 17/03/2006 19:51:25 et initié par jesusonline [Liste]
Date de mise à jour : 08/04/2006 14:06:45
Vue : 21187
Catégorie(s) : Trucs & Astuces, XML
Langages dispo pour ce code :
- VB 2005, VB.NET 1.x
- C# 1.x, C# 2.x
- Java
- PHP 5
- C# 2.x
- Voir tous les langages pour ce code snippet



Langage : Java
Date ajout : 20/03/2006
Posté par neodante [Liste]

import java.beans.*; import java.io.*; public class XMLSerialisationSample {         public static void main(String[] args) {                 // Création des noeuds         System.out.println("Affichage avant sérialisation :");         Node root = new Node("Racine");    // Noued racine         Node node1 = new Node("Noeud 1"); // D'autres noeuds         Node node2 = new Node("Noeud 2");                 // Construction de la liste chainée         root.attach(node1);         node1.attach(node2);                 // Affichage de notre liste         root.printList();                 // Enregistrement de nos noeuds à partir de la racine         try {             XMLEncoder e = new XMLEncoder(                     new BufferedOutputStream(                     new FileOutputStream("TestNode.xml")));             e.writeObject(root);             e.close();         } catch (FileNotFoundException e1) {             e1.printStackTrace();         }                 // Destruction de notre liste         node2 = null;         node1 = null;         root = null;                 // Lecture (désérialisation) de notre fichier XML         try {             XMLDecoder d = new XMLDecoder(new BufferedInputStream(                     new FileInputStream("TestNode.xml")));             root = (Node) d.readObject();             d.close();         } catch (FileNotFoundException e) {             e.printStackTrace();         }                 // Affichage de notre liste         System.out.println("Affichage après désérialisation :");         root.printList();     } }

... Classe dans son propre fichier 

public class Node implements Serializable {     private Object value;     private Node prev;     private Node next;     public Node() {         prev = null;         next = null;         value = null;     }         public Node(Object val){         value = val;     }         public Node getNext() {         return next;     }     public void setNext(Node next) {         this.next = next;     }     public Node getPrev() {         return prev;     }     public void setPrev(Node prev) {         this.prev = prev;     }     public Object getValue() {         return value;     }     public void setValue(Object value) {         this.value = value;     }         public void attach(Node node){         next = node;         node.prev = this;     }         public boolean isFirst(){         return prev == null;     }         public void printList(){         Node n = this;         while (n != null){             System.out.print(n + "\n");             n = n.next;         }     }         public String toString() {         return "<Node> value = " + (value != null ? value : "NULL");     } }

Remarque :
Cet exemple est très simple, tout comme l'est la sérialisation XML. Pour de plus amples informations sur ce principe, veuillez consulter la javadoc :

- http://java.sun.com/j2se/1.4.2/docs/api/java/beans/XMLEncoder.html
- http://java.sun.com/j2se/1.4.2/docs/api/java/beans/XMLDecoder.html

- http://java.sun.com/j2se/1.4.2/docs/guide/serialization/


Attention : la sérialisation XML est spécialisé dans les javaBeans
(c'est à dire les classes possédant des propriétés (un attributs et des accesseurs get/set appropriés) publiques.


Il y a 4 choses qui sont donc INDISPENSABLE pour ça :
- Un constructeur par défaut (sans paramètres)
- La classe doit implémenter l'interface Serializable
- Toutes les propriétés que vous devez enregistrer doivent avoir des accesseurs (get/set)
- Etre une classe PUBLIQUE !! public class (La classe doit être dans son propre fichier !)

Snippets en rapport avec : Serialisation, Deserialisation, Xml, Serialize, Deserialize



Codes sources en rapport avec : Serialisation, Deserialisation, Xml, Serialize, Deserialize

{PDA / PocketPC} POCKETAPPCONFIG : CONSERVER SES PRÉFÉRENCES
Dans de nombreux cas il est inutile d'utiliser une base de donnée pour sauvegarder quelques préféren...

{C# / C#.NET} DESSINER EN XML
C'est le prolongement d'un test d'embauche : On m'a demandé de faire un composant (dll) qui serait c...

{JAVA / J2EE} MANIPULATION DE FICHIER XML
le code creé un fichier XML depuis une base de données Mysql ensuite il auras l'affichage du conten...

{PHP} [PHP5] XML OBJECT SERIALIZER/UNSERIALIZER
Bon...je vais tenter d'expliquer le concept ;-) Les adeptes de la POO PHP connaisse les fonctions s...

{C# / C#.NET} [C#] [XML] SERIALIZATION STRING, COLOR, ARRAYLIST, HASHTABLE, DATETIME
Voici un ensemble de classes qui vont permettre en englobant des classes de bases de C# de faire de ...

{JAVA / J2EE} SÉRIALISATION
c un petit programme qui vous presente d'une maniere tres simple la facon d'utiliser une des methode...

{Flash} XMLIZER : OBJET FONCTIONNANT SUR LE PRINCIPE DE "SERIALIZE()" ET "UNSERIALIZE()" DE PHP.
Après mettre pencher sur le "serialize()" et "unserialize()" de PHP grace a Skreo, je me suis vite r...

{Flash} CLASSE SERIALIZER : SERIALIZE() ET UNSERIALIZE() IDENTIQUES À PHP
La classe Serializer contient 2 fonction publiques : serialize() et unserialize() identiques à php ...

{C# / C#.NET} SÉRIALISEZ VOS FICHIERS DE CONFIGURATION !!!
Combien de fois avez-vous réécris vos méthodes permettant de gérer vos fichiers de configurations ??...

{PHP} CLIENT CHAT (MESSAGERIE PRIVÉE) AJAX ET PHP
il s'agit d'un client chat en ajax et php. Ce systéme de messagerie gére l'envoi de messages privés....