IXmlSerializable Interface
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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 |
ReadXml(XmlReader) |
Gera um objeto com base em sua representação XML. |
WriteXml(XmlWriter) |
Converte um objeto em sua representação XML. |