Problème de sérialisation XML
Bonjour à tous.
Je cherche à sérialiser une classe contenant une liste de classes :
Classe Voiture :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
|
<Serializable()>
Public Class Voiture
Private _marque As String
Private _modele As String
Public Sub New()
End Sub
Public Sub New(ByVal marque As String, ByVal modele As String)
_marque = marque
_modele = modele
End Sub
Public Property Marque As String
Get
Return _marque
End Get
Set(ByVal value As String)
_marque = value
End Set
End Property
Public Property Modele As String
Get
Return _modele
End Get
Set(ByVal value As String)
_modele = value
End Set
End Property
End Class |
Classe Voitures :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
|
<Serializable()>
Public Class Voitures
Private _lst As List(Of Voiture)
Public Sub New()
_lst = New List(Of Voiture)
End Sub
Public Function Nombre() As Integer
Return _lst.Count
End Function
Public Sub Add(ByVal V As Voiture)
_lst.Add(V)
End Sub
Public Function uneVoiture(ByVal index As Integer) As Voiture
If index < _lst.Count Then
Return _lst.Item(index)
End If
Return Nothing
End Function
End Class |
Code du form :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
|
Imports System.IO
Imports System.Xml.Serialization
Public Class Form1
Private _lstVoitures As Voitures
Private _V As Voiture
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
_lstVoitures = New Voitures
_lstVoitures.Add(New Voiture("Peugeot", "205"))
_lstVoitures.Add(New Voiture("Peugeot", "405"))
_lstVoitures.Add(New Voiture("Renault", "Laguna"))
Try
Me.Save(Of Voitures)(_lstVoitures, My.Application.Info.DirectoryPath & "\voitures.xml")
Catch ex As Exception
MsgBox(ex.Message)
End Try
_V = New Voiture("Renault", "Laguna")
Try
Me.Save(Of Voiture)(_V, My.Application.Info.DirectoryPath & "\voiture.xml")
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Sub Save(Of T)(ByVal tObject As T, ByVal strFilename As String)
Try
Dim objSW As New StreamWriter(strFilename, False, System.Text.Encoding.Default)
objSW.Write(Me.Serialize(Of T)(tObject))
objSW.Close()
Catch ex As Exception
MsgBox(ex.Message)
End Try
End Sub
Private Function Serialize(Of T)(ByVal lst As T) As String
Try
Dim objXS As New XmlSerializer(GetType(T))
Dim objSW As New StringWriter
objXS.Serialize(objSW, lst)
Return objSW.ToString()
Catch ex As Exception
MsgBox(ex.Message)
End Try
Return Nothing
End Function
End Class |
Lorsque je sérialise la classe Voiture, j'obtiens :
Code:
1 2 3 4 5 6
|
<?xml version="1.0" encoding="utf-16"?>
<Voiture xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Marque>Renault</Marque>
<Modele>Laguna</Modele>
</Voiture> |
Ce qui me convient parfaitement.
Cependant, lorsque je sérialise la classe Voitures, j'obtiens :
Code:
1 2 3
|
<?xml version="1.0"?>
<articles xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" /> |
Les données des voitures ne sortent pas.
Je sèche. :cry: Je ne trouve pas où est mon erreur. :?
Un coup de main, s'il vous please... :lol: