Fornisce una formattazione personalizzata per la serializzazione e la deserializzazione XML.
Spazio dei nomi: System.Xml.Serialization
Assembly: System.Xml (in system.xml.dll)
Visual Basic - (Dichiarazione)
Public Interface IXmlSerializable
Dim instance As IXmlSerializable
public interface IXmlSerializable
public interface class IXmlSerializable
public interface IXmlSerializable
public interface IXmlSerializable
L'implementazione di questa interfaccia si rivela utile per due motivi. Il primo è rappresentato dalla possibilità di controllare il modo in cui l'oggetto viene serializzato o deserializzato da XmlSerializer. È ad esempio possibile suddividere i dati in byte anziché inserire nel buffer insiemi di dati di grandi dimensioni, nonché evitare l'ingrandimento che si verifica in caso di codifica Base64 dei dati. Per controllare la serializzazione, implementare i metodi ReadXml e WriteXml in modo da controllare le classi XmlReader e XmlWriter utilizzate per la lettura e la scrittura dell'XML. Per un esempio, vedere Procedura: dividere in blocchi i dati serializzati.
Il secondo motivo è costituito dalla possibilità di controllare lo schema. A tale scopo, è necessario applicare XmlSchemaProviderAttribute al tipo serializzato e specificare il nome del membro statico che restituisce lo schema. Per un esempio, vedere XmlSchemaProviderAttribute.
Una classe che implementi l'interfaccia deve disporre di un costruttore privo di parametri. Si tratta di un requisito della classe XmlSerializer.
Nel codice di esempio riportato di seguito viene illustrata un'implementazione dell'interfaccia IXmlSerializable con cui viene serializzato un campo privato.
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);
}
}
#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);
}
};
import System.*;
import System.Xml.*;
import System.Xml.Schema.*;
import System.Xml.Serialization.*;
public class Person implements IXmlSerializable
{
// Private state
private String personName;
// Constructors
public Person(String name)
{
personName = name;
} //Person
public Person()
{
personName = null;
} //Person
// Xml Serialization Infrastructure
public void WriteXml(XmlWriter writer)
{
writer.WriteString(personName);
} //WriteXml
public void ReadXml(XmlReader reader)
{
personName = reader.ReadString();
} //ReadXml
public XmlSchema GetSchema()
{
return null;
} //GetSchema
// Print
public String ToString()
{
return personName;
} //ToString
} //Person
Windows 98, Windows 2000 SP4, Windows CE, Windows Millennium Edition, Windows Mobile per Pocket PC, Windows Mobile per Smartphone, Windows Server 2003, Windows XP Media Center Edition, Windows XP Professional x64 Edition, Windows XP SP2, Windows XP Starter Edition
.NET Framework non supporta tutte le versioni di ciascuna piattaforma. Per un elenco delle versioni supportate, vedere Requisiti di sistema.
Informazioni sulla versione
.NET Framework
Supportato in: 2.0 1.1 1.0
.NET Compact Framework
Supportato in: 2.0 1.0