Interfaccia IXmlSerializabl ...
System.Xml.Serialization


Riferimento a .NET Framework
Interfaccia IXmlSerializable

Fornisce una formattazione personalizzata per la serializzazione e la deserializzazione XML.

Spazio dei nomi: System.Xml.Serialization
Assembly: System.Xml (in system.xml.dll)

Sintassi

Visual Basic - (Dichiarazione)
Public Interface IXmlSerializable
Visual Basic (Utilizzo)
Dim instance As IXmlSerializable
C#
public interface IXmlSerializable
C++
public interface class IXmlSerializable
J#
public interface IXmlSerializable
JScript
public interface IXmlSerializable
Note

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.

Esempio

Nel codice di esempio riportato di seguito viene illustrata un'implementazione dell'interfaccia IXmlSerializable con cui viene serializzato un campo privato.

C#
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);
    }

}
C++
#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);
   }
};
J#
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 
Piattaforme

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
Vedere anche

Tag :


Page view tracker