Partager via


IXmlSerializable Interface

Définition

Fournit une mise en forme personnalisée pour la désérialisation et la sérialisation XML.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Dérivé

Exemples

L’exemple de code suivant montre une implémentation de l’interface IXmlSerializable qui sérialise un champ privé.

#using <System.Xml.dll>

using namespace System;
using namespace System::Xml;
using namespace System::Xml::Schema;
using namespace System::Xml::Serialization;
public ref class Person: public IXmlSerializable
{
private:

   // Private state
   String^ personName;

public:

   // Constructors
   Person( String^ name )
   {
      personName = name;
   }

   Person()
   {
      personName = nullptr;
   }

   // Xml Serialization Infrastructure
   virtual void WriteXml( XmlWriter^ writer )
   {
      writer->WriteString( personName );
   }

   virtual void ReadXml( XmlReader^ reader )
   {
      personName = reader->ReadString();
   }

   virtual XmlSchema^ GetSchema()
   {
      return nullptr;
   }

   // Print
   virtual String^ ToString() override
   {
      return (personName);
   }
};
using System;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization;

public class Person : IXmlSerializable
{

    // Private state

    private string personName;

    // Constructors

    public Person (string name)
    {
        personName = name;
    }

    public Person ()
    {
        personName = null;
    }

    // Xml Serialization Infrastructure

    public void WriteXml (XmlWriter writer)
    {
        writer.WriteString(personName);
    }

    public void ReadXml (XmlReader reader)
    {
        personName = reader.ReadString();
    }

    public XmlSchema GetSchema()
    {
        return(null);
    }

    // Print

    public override string ToString()
    {
        return(personName);
    }
}

Remarques

Il existe deux raisons d’implémenter cette interface. La première consiste à contrôler la façon dont votre objet est sérialisé ou désérialisé par le XmlSerializer. Par exemple, vous pouvez segmenter les données en octets au lieu de mettre en mémoire tampon des jeux de données volumineux, et également éviter l’inflation qui se produit lorsque les données sont encodées à l’aide de l’encodage Base64. Pour contrôler la sérialisation, implémentez les ReadXml méthodes et WriteXml pour contrôler les XmlReader classes et XmlWriter utilisées pour lire et écrire le code XML. Pour obtenir un exemple de ceci, consultez Guide pratique pour segmenter des données sérialisées.

La deuxième raison est de pouvoir contrôler le schéma. Pour l’activer, vous devez appliquer au XmlSchemaProviderAttribute type sérialisable et spécifier le nom du membre statique qui retourne le schéma. Pour obtenir un exemple, consultez XmlSchemaProviderAttribute.

Une classe qui implémente l’interface doit avoir un constructeur sans paramètre. Il s’agit d’une exigence de la XmlSerializer classe .

Méthodes

GetSchema()

Cette méthode est réservée et ne doit pas être utilisée. Au moment d’implémenter l’interface IXmlSerializable, vous devez retourner la valeur null (Nothing en Visual Basic) à partir de cette méthode. En revanche, si vous devez spécifier un schéma personnalisé, appliquez XmlSchemaProviderAttribute à la classe.

ReadXml(XmlReader)

Génère un objet à partir de sa représentation XML.

WriteXml(XmlWriter)

Convertit un objet en sa représentation XML.

S’applique à

Voir aussi