Overblog Suivre ce blog
Editer l'article Administration Créer mon blog

Présentation

  • : Romagny13 - Du .NET,du pur .NET
  • Romagny13 - Du .NET,du pur .NET
  • : Cycle de progression Faire (quelque chose qui marche) -> comprendre ce que l’on fait/comment cela marche -> pousser plus loin les notions
  • Contact

Recherche

Articles Récents

2 février 2014 7 02 /02 /février /2014 01:02

1-      Exemple (ne pas oublier using à System.IO et using System.Xml.Serialization, ainsi que les éventuelles références)

Exemple Une classe static permettant de sérializer et déserializer une liste de contacts

internal static class Serializer

    {

        public static void Serialize(string fileName, Contacts contacts)

        {

            XmlSerializer serializer = new XmlSerializer(typeof(Contacts));

            using (StreamWriter writer = new StreamWriter(fileName))

            {

                serializer.Serialize(writer, contacts);

            }

        }

 

        public static Contacts Deserialize(string fileName)

        {

            XmlSerializer serializer = new XmlSerializer(typeof(Contacts));

            Contacts contacts;

            using (StreamReader reader = new StreamReader(fileName))

            {

                 contacts = (Contacts)serializer.Deserialize(reader);

            }

 

            return contacts;

        }

}

 

MainForm.cs

J’utilise dans l’exemple un bindingSource (+ bindingNavigator)

bindingSource1.DataSource = Serializer.Deserialize(fileName);

 

Serializer.Serialize(fileName, (Contacts)bindingSource1.DataSource);

 

2 – Sérialzation Xml générique

internal static class Serializer

    {

public static void Serialize<T>(string fileName, T obj)

        {

            XmlSerializer serializer = new XmlSerializer(typeof(T));

            using (StreamWriter writer = new StreamWriter(fileName))

            {

                serializer.Serialize(writer, obj);

            }

        }

 

        public static T Deserialize<T>(string fileName)

        {

            XmlSerializer serializer = new XmlSerializer(typeof(T));

            T obj;

            using (StreamReader reader = new StreamReader(fileName))

            {

               obj = (T)serializer.Deserialize(reader);

            }

            return obj;

        }

 

}

 

 

Exemple de fichier xml généré

<?xml version="1.0" encoding="utf-8"?>

<ArrayOfContact xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">

  <Contact>

    <contactId>1</contactId>

    <contactName>dupond</contactName>

    <contactFirstName>paul</contactFirstName>

    <purchase>10</purchase>

  </Contact>

  <Contact>

    <contactId>2</contactId>

    <contactName>durand </contactName>

    <contactFirstName>marc</contactFirstName>

    <purchase>15</purchase>

  </Contact>

</ArrayOfContact>

 

MainForm.cs

bindingSource1.DataSource = Serializer.Deserialize<Contacts>(fileName);

 

Serializer.Serialize<Contacts>(fileName,(Contacts) bindingSource1.DataSource);

 

 

3 -Attributs de controle

Astuce : ne pas oublier using System.Xml.Serialization;

 

XmlIgnore permet de ne pas sérializer ce membre

XmlElement permet de changer le nom de la balise générée

Exemple balise achat à la place de purchase

[XmlElement("Achat")]

        public int purchase

        {

            get { return _purchase; }

            set { _purchase = value; }

        }

 

<Achat>0</Achat>

 

XmlRoot change le nom pour la classe

XmlAttribute la propriété sera générée sous forme d’attribut

[XmlAttribute("id")]

        public int contactId

        {

            get { return _contactId; }

            set { _contactId = value; }

        }

 

<Contact id="0">

 

Etc.

http://tlevesque.developpez.com/dotnet/xml-serialization/#LII

Partager cet article

Repost 0
Published by Romagny13 - dans Xml
commenter cet article

commentaires