IXmlSerializable IXmlSerializable IXmlSerializable IXmlSerializable Interface

Definição

Fornece a formatação personalizada para serialização de XML e de desserialização.Provides custom formatting for XML serialization and deserialization.

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

Exemplos

O código de exemplo a seguir mostra uma implementação IXmlSerializable da interface que serializa um campo particular.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);
    }

}

Comentários

Há dois motivos para implementar essa interface.There are two reasons to implement this interface. A primeira é controlar como seu objeto é serializado ou desserializado pelo XmlSerializer.The first is to control how your object is serialized or deserialized by the XmlSerializer. Por exemplo, você pode dividir dados em bytes em vez de armazenar em buffer grandes conjuntos de dados e também evitar a inflação que ocorre quando os dados são codificados usando a codificação 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. Para controlar a serialização, implemente ReadXml os WriteXml métodos e para controlar XmlReader as XmlWriter classes e usadas para ler e gravar o 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. Para obter um exemplo disso, consulte como: Dadosserializados na parte.For an example of this, see How to: Chunk Serialized Data.

A segunda razão é poder controlar o esquema.The second reason is to be able to control the schema. Para habilitar isso, você deve aplicar o XmlSchemaProviderAttribute ao tipo serializável e especificar o nome do membro estático que retorna o esquema.To enable this, you must apply the XmlSchemaProviderAttribute to the serializable type, and specify the name of the static member that returns the schema. Consulte o XmlSchemaProviderAttribute para obter um exemplo.See the XmlSchemaProviderAttribute for an example.

Uma classe que implementa a interface deve ter um construtor sem parâmetros.A class that implements the interface must have a parameterless constructor. Esse é um requisito da XmlSerializer classe.This is a requirement of the XmlSerializer class.

Métodos

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

Esse método está reservado e não deve ser usado.This method is reserved and should not be used. Ao implementar a interface IXmlSerializable, você deverá retornar null (Nothing no Visual Basic) desse método e, em vez disso, se a especificação de um esquema personalizado for necessária, aplique o XmlSchemaProviderAttribute à 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)

Gera um objeto de sua representação XML.Generates an object from its XML representation.

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

Converte um objeto em sua representação XML.Converts an object into its XML representation.

Aplica-se a

Veja também