Esporta (0) Stampa
Espandi tutto

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)

public interface 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);
    }

}

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.

.NET Framework

Supportato in: 2.0 1.1 1.0

.NET Compact Framework

Supportato in: 2.0 1.0

Aggiunte alla community

AGGIUNGI
Microsoft sta conducendo un sondaggio in linea per comprendere l'opinione degli utenti in merito al sito Web di MSDN. Se si sceglie di partecipare, quando si lascia il sito Web di MSDN verrà visualizzato il sondaggio in linea.

Si desidera partecipare?
Mostra:
© 2015 Microsoft