begin process at 2008 07 06 18:43:10
1 205 717 membres
280 nouveaux aujourd'hui
14 119 membres club

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.
  • 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

Pub



Appels d'offres

WEB DESIGN
Budget : 1 000€
Plugin Dialer outlook
Budget : 2 000€
Travail graphique- ill...
Budget : 1 000€

Snippets en rapport

CalendriCode

Juillet 2008
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Boutique

Boutique de goodies CodeS-SourceS