Compartir vía


IXmlSerializable Interfaz

Definición

Proporciona un formato personalizado para la serialización y deserialización XML.

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

Ejemplos

En el código de ejemplo siguiente se muestra una implementación de la IXmlSerializable interfaz que serializa un 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);
    }
}

Comentarios

Hay dos razones para implementar esta interfaz. La primera consiste en controlar cómo el objeto se serializa o deserializa mediante XmlSerializer. Por ejemplo, puede fragmentar datos en bytes en lugar de almacenar en búfer grandes conjuntos de datos y evitar también la inflación que se produce cuando los datos se codifican mediante la codificación Base64. Para controlar la serialización, implemente los ReadXml métodos y WriteXml para controlar las XmlReader clases y XmlWriter que se usan para leer y escribir el XML. Para obtener un ejemplo de esto, vea Cómo: Fragmentar datos serializados.

La segunda razón es poder controlar el esquema. Para habilitarlo, debe aplicar al XmlSchemaProviderAttribute tipo serializable y especificar el nombre del miembro estático que devuelve el esquema. Vea XmlSchemaProviderAttribute para obtener un ejemplo.

Una clase que implementa la interfaz debe tener un constructor sin parámetros. Este es un requisito de la XmlSerializer clase .

Métodos

GetSchema()

Este método está reservado y no debe utilizarse. Al implementar la interfaz IXmlSerializable, debe devolver null (Nothing en Visual Basic) de este método y, en su lugar, si es necesario especificar un esquema personalizado, aplique el XmlSchemaProviderAttribute a la clase.

ReadXml(XmlReader)

Genera un objeto a partir de su representación XML.

WriteXml(XmlWriter)

Convierte un objeto en su representación XML.

Se aplica a

Consulte también