Exemple de sérialisation d'objets

Soyez le premier à donner votre avis sur cette source.

Snippet vu 14 763 fois - Téléchargée 28 fois

Contenu du snippet

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

Source / Exemple :


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.

A voir également

Ajouter un commentaire

Commentaires

Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008

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
Messages postés
49
Date d'inscription
vendredi 22 octobre 2004
Statut
Membre
Dernière intervention
12 juin 2008

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.
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008

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".
Messages postés
119
Date d'inscription
vendredi 17 novembre 2006
Statut
Membre
Dernière intervention
28 avril 2008

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 ?
Messages postés
1
Date d'inscription
mercredi 27 juillet 2005
Statut
Membre
Dernière intervention
14 décembre 2005

merci pour vous ;mais c'est tres dificile
Afficher les 8 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.