Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

EXEMPLE DE SÉRIALISATION D'OBJETS


Information sur la source

Description

Rien de bien compliqué, juste histoire de montrer comment sérialiser un objet de votre application.

 

Source

  • Imports System.Xml
  • Imports System.Xml.Serialization
  • Imports System.IO
  • Imports System.Text
  • Public Class Humain
  • Public Nom As String
  • Public Prenom As String
  • Public DateNaissance As String
  • End Class
  • Module Serial
  • Dim Fichier As String = "Objet_Humain.xml"
  • Dim Objet_Humain As Humain
  • Public Sub Deserialiser()
  • Try
  • Dim x As XmlSerializer = New XmlSerializer(GetType(Humain))
  • Dim fs As New FileStream(Fichier, FileMode.Open)
  • Dim r As New XmlTextReader(fs)
  • Objet_Humain = CType(x.Deserialize(r), Humain)
  • r.Close()
  • fs.Close()
  • Catch ex As Exception
  • MsgBox(ex.ToString)
  • End Try
  • End Sub
  • Public Sub Serialiser()
  • Try
  • Dim x As XmlSerializer = New XmlSerializer(GetType(Humain))
  • Dim fs As New FileStream(Fichier, FileMode.Create)
  • Dim w As New XmlTextWriter(fs, New UTF8Encoding)
  • w.Formatting = Formatting.Indented
  • x.Serialize(w, Objet_Humain)
  • w.Close()
  • fs.Close()
  • Catch ex As Exception
  • MsgBox(ex.ToString)
  • End Try
  • End Sub
  • Public Sub main()
  • Try
  • Objet_Humain = New Humain
  • Objet_Humain.Nom = "X"
  • Objet_Humain.Prenom = "Senynium"
  • Objet_Humain.DateNaissance = "07/08/80"
  • MessageBox.Show("Nom : " & Objet_Humain.Nom & vbCrLf & "Prenom : " & Objet_Humain.Prenom & vbCrLf & "Ne le : " & Objet_Humain.DateNaissance, "Exemple de sérialisation", MessageBoxButtons.OK)
  • Serialiser()
  • Objet_Humain = New Humain
  • Objet_Humain.Nom = "A changé"
  • Objet_Humain.Prenom = "Achangé"
  • Objet_Humain.DateNaissance = "A changé"
  • MessageBox.Show("Nom : " & Objet_Humain.Nom & vbCrLf & "Prenom : " & Objet_Humain.Prenom & vbCrLf & "Ne le : " & Objet_Humain.DateNaissance, "Exemple de sérialisation", MessageBoxButtons.OK)
  • Objet_Humain = New Humain
  • Deserialiser()
  • MessageBox.Show("Nom : " & Objet_Humain.Nom & vbCrLf & "Prenom : " & Objet_Humain.Prenom & vbCrLf & "Ne le : " & Objet_Humain.DateNaissance, "Exemple de sérialisation", MessageBoxButtons.OK)
  • Catch ex As Exception
  • MsgBox(ex.ToString)
  • End Try
  • End Sub
  • End Module
Imports System.Xml
Imports System.Xml.Serialization
Imports System.IO
Imports System.Text



Public Class Humain
    Public Nom As String
    Public Prenom As String
    Public DateNaissance As String
End Class

Module Serial

    Dim Fichier As String = "Objet_Humain.xml"
    Dim Objet_Humain As Humain

    Public Sub Deserialiser()
        Try
            Dim x As XmlSerializer = New XmlSerializer(GetType(Humain))
            Dim fs As New FileStream(Fichier, FileMode.Open)
            Dim r As New XmlTextReader(fs)

            Objet_Humain = CType(x.Deserialize(r), Humain)
            r.Close()
            fs.Close()

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub


    Public Sub Serialiser()
        Try
            Dim x As XmlSerializer = New XmlSerializer(GetType(Humain))

            Dim fs As New FileStream(Fichier, FileMode.Create)
            Dim w As New XmlTextWriter(fs, New UTF8Encoding)
            w.Formatting = Formatting.Indented
            x.Serialize(w, Objet_Humain)
            w.Close()
            fs.Close()

        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub


    Public Sub main()
        Try
            Objet_Humain = New Humain
            Objet_Humain.Nom = "X"
            Objet_Humain.Prenom = "Senynium"
            Objet_Humain.DateNaissance = "07/08/80"

            MessageBox.Show("Nom : " & Objet_Humain.Nom & vbCrLf & "Prenom : " & Objet_Humain.Prenom & vbCrLf & "Ne le : " & Objet_Humain.DateNaissance, "Exemple de sérialisation", MessageBoxButtons.OK)

            Serialiser()

            Objet_Humain = New Humain
            Objet_Humain.Nom = "A changé"
            Objet_Humain.Prenom = "Achangé"
            Objet_Humain.DateNaissance = "A changé"

            MessageBox.Show("Nom : " & Objet_Humain.Nom & vbCrLf & "Prenom : " & Objet_Humain.Prenom & vbCrLf & "Ne le : " & Objet_Humain.DateNaissance, "Exemple de sérialisation", MessageBoxButtons.OK)

            Objet_Humain = New Humain
            Deserialiser()


            MessageBox.Show("Nom : " & Objet_Humain.Nom & vbCrLf & "Prenom : " & Objet_Humain.Prenom & vbCrLf & "Ne le : " & Objet_Humain.DateNaissance, "Exemple de sérialisation", MessageBoxButtons.OK)


        Catch ex As Exception
            MsgBox(ex.ToString)
        End Try
    End Sub

End Module


Conclusion

C'est juste à titre d'exemple donc ...   L'objet est sérialisé et écrit dans un fichier xml. Utile pour les échanges entre applications, ou pour un transfert internet.
 

Commentaires et avis

signaler à un administrateur
Commentaire de Patrice99 le 08/12/2005 09:01:35

Je croyais qu'il suffisait simplement de mettre un attribut [Serialisable] sur la classe, en moins d'une ligne de code ???

signaler à un administrateur
Commentaire de Senynium X le 08/12/2005 09:45:29

Ah ? Et elle se sérialise toute seule ? Tu me montres comment faire ?

signaler à un administrateur
Commentaire de stef2004 le 09/12/2005 23:29:31

c'est quoi la sérialisation? excusez mon ignorance :)

signaler à un administrateur
Commentaire de sakty le 14/12/2005 15:25:22

merci pour vous ;mais c'est tres dificile

signaler à un administrateur
Commentaire de _Fabien le 10/01/2007 11:32:19

Merci pour cet exemple clair et simple qui ravira les débutants comme moi.

Ce serait bien de faire la même chose avec des structures mis dans des fichiers binaires.

Sinon, moi non plus, je ne sais pas pourquoi Microsoft a inventé la sérialisation ?

signaler à un administrateur
Commentaire de _Fabien le 10/01/2007 12:38:55

J'ai une question très bête : j'arrive pas à faire marcher ton programe. Où dois-je le compiler ? Dans fichier "Module", "Class", "Unité de test" (...) ?

Lorsque je le mets dans un module, il m'affiche des erreurs comme quoi MessageBox, MessageBoxButtons ne sont pas déclarés. Pareil quand je le mets dans un fichier "Class".

signaler à un administrateur
Commentaire de Senynium X le 10/01/2007 12:58:08

Salut,
Ce code ne génère pas d'erreur dans un module. Verifie que tu as une référence à la bibliothèque "system.windows.forms" dans ton projet.

signaler à un administrateur
Commentaire de _Fabien le 10/01/2007 13:49:34

Merci. Charles Racaud m'a répondu ici ->

http://www.vbfrance.com/infomsg_QUESTION-TRES-BETE_870170.aspx#5

Il a dit comme toi. Ça marche.

Sinon faut ajouter dans le code (pour ceux qui ont coincé comme moi) :

Imports system.windows.forms

Sinon, ton code m'intéresse car comme dit plus haut, mon vrai but est d'écrire une structure (ou alors une classe si marche pas) dans un fichier binaire. Et j'y arrive pas ! Alors, si je comprends ton code, j'essaierai de l'appliquer non pas pour des fichiers XML mais pour des fichiers binaires.

Voici 2 liens (une source et un message de moi dans le forum) :

http://www.vbfrance.com/codes/NET-TYPE-STRUCTURE-COMPATIBILITE-VB6_25830.aspx

http://www.vbfrance.com/infomsg_LIRE-ECRIRE-STRUCTURE-DANS-FICHIER_865075.aspx#6

Ajouter un commentaire

Discussions en rapport avec ce code source dans le forum

Sérialisation d'un objet [ par Ougalougou ] Je voudrais un exemple simple de création d'un objet 'personne" avec comme attributs "nom" et "prénom" et la sérialisation dans un fichier pour les co sérialisation d'une application [ par progrima ] bonjour tout le monde! je cherche à sécuriser des applications qui existent déjà et pour cela j'ai pensé à génerer des numéros de série, j'explique: 1 sérialisation [ par monvbfrance ] salut tout le mondeje voudrais un module qui fait la transformation d'un fichier xml ou xsd aux classes exploitable par le DOTNET. est ce que vous pou Sérialisation, génération de classes via XSD.exe [ par bacchusmaster ] Bonjour à tous,Je suis tombé sur un article (http://c2i.fr/code.aspx?IDCode=606) qui traite exactement de ce que je veux faire mai [DEBUTANT] sérialisation binaire de plusieurs objets [ par xawax34 ] Bonjour,Je voudrais faire une sérialisation binaire de plusieurs objets dans un seul fichier et lorsque je désérialise, chacun devra se retrouver dans sérialisation et sockets [ par Kite37 ] Bonjour ! Alors voici ma question : Pour le besoin de mon logiciel, je me retrouve dans l'obligation d'envoyer des objets complet via socket.Ceux-ci n Désérialisation en visual studio 2005 [ par Grefer2luxe ] Bonjour,Je fais actuellement une application en visual studio 2005 et je rencontre un souci. En effet, j'ai réussi à sérialiser dans mon programme mai problème sérialisation [ par jabaka ] Bonjour je vous expose mon problème que voici:J'ai trouver quelques sources qui parlais de sérialisation et même quelque un qui traitait du RichTextBo Sérialisation d'une form (au moment du design) [ par veler ] Salut,J'ai crée un concepteur de fenêtre, j'aimerais pouvoir obtenir une class (un bout de code quoi) à partir du contenu du concepteur (design surfac Problème avec la désérialisation binaire [ par veler ] Salut,J'ai un piti problème avec la désérialisation :J'ai le code suivant :Dim myFileStream As IO.Stream = IO.File.OpenRead(tmp_NomCompletFichier)Dim


Nos sponsors

Sondage...

CalendriCode

Juillet 2009
LMMJVSD
  12345
6789101112
13141516171819
20212223242526
2728293031  

Consulter la suite du CalendriCode

Comparez les prix Nouvelle version

Photothèque Nouveau !



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.