IXmlSerializable Interfaz
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
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 |
ReadXml(XmlReader) |
Genera un objeto a partir de su representación XML. |
WriteXml(XmlWriter) |
Convierte un objeto en su representación XML. |