IXmlSerializable IXmlSerializable IXmlSerializable IXmlSerializable Interface

Definizione

Fornisce una formattazione personalizzata per la serializzazione e la deserializzazione XML.Provides custom formatting for XML serialization and deserialization.

public interface class IXmlSerializable
public interface IXmlSerializable
type IXmlSerializable = interface
Public Interface IXmlSerializable
Derivato

Esempi

Esempio di codice seguente viene illustrata un'implementazione del IXmlSerializable interfaccia che serializza un campo privato.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);
    }

}

Commenti

Esistono due motivi per implementare questa interfaccia.There are two reasons to implement this interface. La prima consiste nel controllare come l'oggetto viene serializzato o deserializzato dal XmlSerializer.The first is to control how your object is serialized or deserialized by the XmlSerializer. Ad esempio, è possibile suddividere i dati in byte anziché il buffer di grandi set di dati e anche evitare l'ingrandimento che si verifica quando i dati vengono codificati con 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. Per controllare la serializzazione, implementare il ReadXml e WriteXml metodi per controllare le XmlReader e XmlWriter classi usate per leggere e scrivere il codice 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. Per un esempio di questo oggetto, vedere come: Bloccare i dati serializzati.For an example of this, see How to: Chunk Serialized Data.

Il secondo motivo è poter controllare lo schema.The second reason is to be able to control the schema. A tale scopo, è necessario applicare il XmlSchemaProviderAttribute a serializzabile digitare e specificare il nome del membro statico che restituisce lo schema.To enable this, you must apply the XmlSchemaProviderAttribute to the serializable type, and specify the name of the static member that returns the schema. Per un esempio, vedere XmlSchemaProviderAttribute.See the XmlSchemaProviderAttribute for an example.

Una classe che implementa l'interfaccia deve avere un costruttore senza parametri.A class that implements the interface must have a parameterless constructor. Questo è un requisito del XmlSerializer classe.This is a requirement of the XmlSerializer class.

Metodi

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

Il metodo è riservato e non deve essere utilizzato.This method is reserved and should not be used. Quando si implementa l'interfaccia IXmlSerializable, è necessario restituire null (Nothing in Visual Basic) da questo metodo. Se invece è richiesta la specifica di uno schema personalizzato, applicare XmlSchemaProviderAttribute alla 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)

Genera un oggetto dalla relativa rappresentazione XML.Generates an object from its XML representation.

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

Converte un oggetto nella relativa rappresentazione XML.Converts an object into its XML representation.

Si applica a

Vedi anche