Compartilhar via


IXmlSerializable Interface

Definição

Fornece a formatação personalizada para serialização de XML e de desserialização.

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 da IXmlSerializable interface que serializa um campo privado.

#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. A primeira é controlar como o objeto é serializado ou desserializado pelo 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. Para controlar a serialização, implemente os ReadXml métodos e WriteXml para controlar as XmlReader classes e XmlWriter usadas para ler e gravar o XML. Para obter um exemplo disso, consulte Como dividir dados serializados.

O segundo motivo é ser capaz de controlar o esquema. Para habilitar isso, você deve aplicar o XmlSchemaProviderAttribute ao tipo serializável e especificar o nome do membro estático que retorna o esquema. Consulte o XmlSchemaProviderAttribute para obter um exemplo.

Uma classe que implementa a interface deve ter um construtor sem parâmetros. Esse é um requisito da XmlSerializer classe .

Métodos

GetSchema()

Esse método está reservado e não deve ser usado. 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.

ReadXml(XmlReader)

Gera um objeto com base em sua representação XML.

WriteXml(XmlWriter)

Converte um objeto em sua representação XML.

Aplica-se a

Confira também