IXmlSerializable IXmlSerializable IXmlSerializable IXmlSerializable Interface

Définition

Offre une mise en forme personnalisée pour la sérialisation et la désérialisation XML.Provides custom formatting for XML serialization and deserialization.

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

Exemples

L’exemple de code suivant illustre une implémentation de la IXmlSerializable interface qui sérialise un champ privé.The following example code shows an implementation of the IXmlSerializable interface that serializes a private field.

#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.There are two reasons to implement this interface. La première consiste à contrôler la façon dont votre objet est sérialisé ou désérialisé par le XmlSerializer.The first is to control how your object is serialized or deserialized by the XmlSerializer. Par exemple, vous pouvez découper les données en octets au lieu de la mise en mémoire tampon de grands jeux de données et également d’éviter l’inflation qui se produit lorsque les données sont encodées en Base64.For example, you can chunk data into bytes instead of buffering large data sets, and also avoid the inflation that occurs when the data is encoded using Base64 encoding. Pour contrôler la sérialisation, implémentez le ReadXml et WriteXml méthodes pour contrôler le XmlReader et XmlWriter classes utilisées pour lire et écrire le code XML.To control the serialization, implement the ReadXml and WriteXml methods to control the XmlReader and XmlWriter classes used to read and write the XML. Pour obtenir un exemple de cela, consultez Comment : Segmenter des données sérialisées.For an example of this, see How to: Chunk Serialized Data.

La deuxième raison est de pouvoir contrôler le schéma.The second reason is to be able to control the schema. Pour ce faire, vous devez appliquer le XmlSchemaProviderAttribute à sérialisable tapez, puis spécifiez le nom du membre statique qui retourne le schéma.To enable this, you must apply the XmlSchemaProviderAttribute to the serializable type, and specify the name of the static member that returns the schema. Pour obtenir un exemple, consultez XmlSchemaProviderAttribute.See the XmlSchemaProviderAttribute for an example.

Une classe qui implémente l’interface doit avoir un constructeur sans paramètre.A class that implements the interface must have a parameterless constructor. Il s’agit d’une exigence de la XmlSerializer classe.This is a requirement of the XmlSerializer class.

Méthodes

GetSchema() GetSchema() GetSchema() GetSchema()

Cette méthode est réservée et ne doit pas être utilisée.This method is reserved and should not be used. Lorsque vous implémentez l'interface IXmlSerializable, vous devez retourner la valeur null (Nothing dans Visual Basic) à partir cette méthode et, si la spécification d'un schéma personnalisé est requise, appliquez à la place XmlSchemaProviderAttribute à la classe.When implementing the IXmlSerializable interface, you should return null (Nothing in Visual Basic) from this method, and instead, if specifying a custom schema is required, apply the XmlSchemaProviderAttribute to the class.

ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader) ReadXml(XmlReader)

Génère un objet à partir de sa représentation XML.Generates an object from its XML representation.

WriteXml(XmlWriter) WriteXml(XmlWriter) WriteXml(XmlWriter) WriteXml(XmlWriter)

Convertit un objet en sa représentation XML.Converts an object into its XML representation.

S’applique à

Voir aussi