IXmlSerializable IXmlSerializable IXmlSerializable IXmlSerializable Interface

Definición

Proporciona formato personalizado para la serialización y deserialización XML.Provides custom formatting for XML serialization and deserialization.

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

Ejemplos

Ejemplo de código siguiente muestra una implementación de la IXmlSerializable interfaz que serializa un campo privado.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);
    }

}

Comentarios

Hay dos razones para implementar esta interfaz.There are two reasons to implement this interface. La primera consiste en controlar cómo se serializa o deserializa el objeto el XmlSerializer.The first is to control how your object is serialized or deserialized by the XmlSerializer. Por ejemplo, puede fragmentar los datos en bytes en lugar de grandes conjuntos de datos de almacenamiento en búfer y evitar también la inflación que tiene lugar cuando se codifican los datos con codificación 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 la serialización, implemente el ReadXml y WriteXml métodos para controlar la XmlReader y XmlWriter clases usadas para leer y escribir el código 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 obtener un ejemplo de esto, vea Cómo: Fragmentar datos serializados.For an example of this, see How to: Chunk Serialized Data.

La segunda razón es ser capaz de controlar el esquema.The second reason is to be able to control the schema. Para habilitar esta opción, debe aplicar el XmlSchemaProviderAttribute al elemento serializable escriba y especifique el nombre del miembro estático que devuelve el 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. Vea XmlSchemaProviderAttribute para obtener un ejemplo.See the XmlSchemaProviderAttribute for an example.

Una clase que implementa la interfaz debe tener un constructor sin parámetros.A class that implements the interface must have a parameterless constructor. Este es un requisito de la XmlSerializer clase.This is a requirement of the XmlSerializer class.

Métodos

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

Este método está reservado y no debe utilizarse.This method is reserved and should not be used. Al implementar la interfaz IXmlSerializable, debe devolver null (Nothing en Visual Basic) desde este método y, en su lugar, si se requiere especificar un esquema personalizado, aplique XmlSchemaProviderAttribute a la clase.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 objeto a partir de su representación XML.Generates an object from its XML representation.

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

Convierte un objeto en su representación XML.Converts an object into its XML representation.

Se aplica a

Consulte también: