mercredi 2 septembre 2015

Comment : Sérialiser et désérialiser XML dans Visual Basic .NET



Référence: https://support.microsoft.com/fr-fr/kb/316730
Résumé
Cet article montre comment utiliser la classe System.XmlSerialization.XmlSerializer pour sérialiser et désérialiser un objet au langage XML (Extensible Markup).

back to the top

Configuration requise

La liste suivante met en évidence le matériel recommandé, les logiciels, l'infrastructure réseau et service packs dont vous avez besoin :
  • Microsoft Visual Studio .NET
Cet article suppose que vous maîtrisez les sujets suivants :
  • Microsoft Visual Basic .NET
  • XML
back to the top

Description de la sérialisation XML

La sérialisation est le processus par lequel vous stockez l'état d'un objet dans un flux de données. La sérialisation permet vous permet de faire persister l'état d'un objet afin que vous pouvez récupérer l'état ultérieurement. La sérialisation permet également de vous permet de cloner un objet existant pour créer un nouvel objet. L'espace de noms System.Xml.Serialization contient des classes que vous pouvez utiliser pour sérialiser des objets en XML.

back to the top

Créer l'Application Console dans Visual Basic .NET

Dans cette section, vous créez une application console qui :
  • Désérialise un objet en XML.
  • Enregistre la sérialisation XML dans un fichier texte.
  • Lit le fichier XML dans le fichier texte pour créer un nouvel objet (désérialisation).
  1. Suivez ces étapes pour créer une nouvelle application console dans Visual Basic .NET :
    1. Démarrez Visual Studio .NET.
    2. Dans le menu fichier , pointez sur Nouveau, puis cliquez sur projet.
    3. Dans la boîte de dialogue Nouveau projet , cliquez sur Projets Visual Basic sous Types de projets, puis cliquez sur Application Console sous modèles.
  2. Suivez ces étapes pour ajouter une nouvelle classe au projet :
    1. Dans le menu projet , cliquez sur Ajouter une classe.
    2. Dans la boîte de dialogue Ajouter un nouvel élément , tapez clsProduct.vb dans le texte du nom de zone, puis cliquez surOuvrir.
  3. Remplacez le code dans la fenêtre de code de clsProduct.vb par le code suivant :
    
    Public Class clsProduct
    
      Private mstrName As String
      Private mstrDescription As String
      Private mintQty As Integer
    
      Public Property Name() As String
        Get
          Name = mstrName
        End Get
        Set(ByVal Value As String)
          mstrName = Value
        End Set
      End Property
    
      Public Property Description() As String
        Get
          Description = mstrDescription
        End Get
        Set(ByVal Value As String)
          mstrDescription = Value
        End Set
      End Property
    
      Public Property Qty() As Integer
        Get
          Qty = mintQty
        End Get
        Set(ByVal Value As Integer)
          mintQty = Value
        End Set
      End Property
    
    End Class
          
    Ce code crée une classe de produit avec trois propriétés : nomDescriptionet Qty (quantité).
  4. Basculer vers la fenêtre de code de Module1.vb, puis ajoutez le code suivant en haut de la fenêtre de code :
    
    Imports System.IO
    Imports System.Xml.Serialization
         
  5. Dans la procédure Sub Main , ajoutez le code suivant pour créer et remplir une instance de la classe clsProduct :
    
        'Set up product object.
        Dim p As New clsProduct()
        p.Name = "Widget"
        p.Description = "Faster, better, cheaper"
        p.Qty = 5
         
  6. Utilisez l'objet XmlSerializer pour sérialiser l'objet au format XML et enregistrer l'état d'objet dans un fichier texte. Pour ce faire, ajoutez le code suivant immédiatement avant l'instruction End Sub de la procédure Sub Main :
    
        'Serialize object to a text file.
        Dim objStreamWriter As New StreamWriter("C:\Product.xml")
        Dim x As New XmlSerializer(p.GetType)
        x.Serialize(objStreamWriter, p)
        objStreamWriter.Close()
         
  7. Dans le menu Déboguer , cliquez sur Démarrer pour exécuter l'application.
  8. Ouvrez le fichier Product.xml dans le bloc-notes ou dans Microsoft Internet Explorer. Le contenu de ce fichier doit apparaître comme suit :
    <?xml version="1.0" encoding="utf-8"?>
    <clsProduct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Name>Widget</Name>
      <Description>Faster, better, cheaper</Description>
      <Qty>5</Qty>
    </clsProduct>
          
  9. L'espace de noms Xml.Serialization permet de personnaliser les données générées par la classe XmlSerializer. Par exemple, dans la classe clsProduct , le champ Quantité est abrégé en tant que quantité Vous pouvez utiliser l'attribut XmlElementAttribute à modifier le champ de quantité lors de la sérialisation de la classe.

    Basculer vers la fenêtre de code pour clsProduct.vb, puis ajoutez le code suivant en haut de la fenêtre de code :
    
    Imports System.Xml.Serialization
         
  10. Recherchez la procédure de propriété Qtéet puis insérez le code suivant immédiatement avant l'instruction Public Qty() propriété As Integer :
    
    <XmlElementAttribute(ElementName:="Quantity")> _
         
  11. Dans le menu Déboguer , cliquez sur Démarrer pour exécuter l'application.
  12. Ouvrez le fichier Product.xml dans le bloc-notes ou dans Internet Explorer. Le contenu de ce fichier doit se présente comme suit :
    <?xml version="1.0" encoding="utf-8"?>
    <clsProduct xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
      <Name>Widget</Name>
      <Description>Faster, better, cheaper</Description>
      <Quantity>5</Quantity>
    </clsProduct>
           
    Notez que l'élément Qté modifiée en quantité.
  13. Basculer vers la fenêtre de code de Module1.vb, puis ajoutez le code suivant à la procédure Sub Main immédiatement avant l'instruction End Sub :
    
        'Deserialize text file to a new object.
        Dim objStreamReader As New StreamReader("C:\Product.xml")
        Dim p2 As New clsProduct()
        p2 = x.Deserialize(objStreamReader)
        objStreamReader.Close()
    
        'Display property values of the new product object.
        Console.WriteLine(p2.Name)
        Console.WriteLine(p2.Description)
        Console.WriteLine(CStr(p2.Qty))
        Console.ReadLine()
          
    Ce code désérialise le fichier Product.xml texte pour créer un nouvel objet clsProduct nommé p2. En outre, ce code affiche les valeurs de propriété de p2 dans la fenêtre de Console.
back to the top

Vérifiez qu'il fonctionne

Dans le menu Déboguer , cliquez sur Démarrer pour exécuter l'application. Notez que les valeurs de propriété de p2 apparaissent dans la fenêtre de Console :
Widget
Faster, better, cheaper
5
     
back to the top

Listing complet du Code


'Module1.vb
Imports System.Xml.Serialization
Imports System.IO

Module Module1

  Sub Main()
    
    'Set up product object.
    Dim p As New clsProduct()
    p.Name = "Widget"
    p.Description = "Faster, better, cheaper"
    p.Qty = 5

    'Serialize object to a text file.
    Dim objStreamWriter As New StreamWriter("C:\Product.xml")
    Dim x As New XmlSerializer(p.GetType)
    x.Serialize(objStreamWriter, p)
    objStreamWriter.Close()

    'Deserialize text file to a new object.
    Dim objStreamReader As New StreamReader("C:\Product.xml")
    Dim p2 As New clsProduct()
    p2 = x.Deserialize(objStreamReader)
    objStreamReader.Close()

    'Display property values of the new product object.
    Console.WriteLine(p2.Name)
    Console.WriteLine(p2.Description)
    Console.WriteLine(CStr(p2.Qty))
    Console.ReadLine()

  End Sub

End Module

'clsProduct.vb
Imports System.Xml.Serialization

Public Class clsProduct

  Private mstrName As String
  Private mstrDescription As String
  Private mintQty As Integer

  Public Property Name() As String
    Get
      Name = mstrName
    End Get
    Set(ByVal Value As String)
      mstrName = Value
    End Set
  End Property

  Public Property Description() As String
    Get
      Description = mstrDescription
    End Get
    Set(ByVal Value As String)
      mstrDescription = Value
    End Set
  End Property

  <XmlElementAttribute(ElementName:="Quantity")> _
  Public Property Qty() As Integer
    Get
      Qty = mintQty
    End Get
    Set(ByVal Value As Integer)
      mintQty = Value
    End Set
  End Property

End Class
    
back to the top
Références
Pour plus d'informations, reportez-vous aux sites Web Microsoft suivants : back to the top

Avertissement : Cet article a été traduit de manière automatique

Propriétés
ID d'article : 316730 - Dernière mise à jour : 11/23/2013 11:50:00 - Révision : 7.0
  • Microsoft Visual Basic .NET 2003 Initiation
  • Microsoft Visual Basic .NET 2002 Initiation
  • Microsoft .NET Framework 1.1
  • Microsoft .NET Framework 1.0
  • kbhowtomaster kbmt KB316730 KbMtfr

Aucun commentaire:

Enregistrer un commentaire