XmlObjectSerializer Classe

Définition

Fournit la classe de base utilisée pour sérialiser des objets en tant que documents ou flux XML. Cette classe est abstraite.

public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
Héritage
XmlObjectSerializer
Dérivé

Exemples

L'exemple suivant présente une méthode nommée WriteObjectWithInstance qui inclut un XmlObjectSerializer en tant que paramètre. La méthode sérialise un objet à l'aide de DataContractSerializer ou de NetDataContractSerializer en appelant la méthode WriteObject.

public class Test
{
    private void WriteObjectWithInstance(XmlObjectSerializer xm, Company graph,
       string fileName)
    {
        // Use either the XmlDataContractSerializer or NetDataContractSerializer,
        // or any other class that inherits from XmlObjectSerializer to write with.
        Console.WriteLine(xm.GetType());
        FileStream fs = new FileStream(fileName, FileMode.Create);
        XmlDictionaryWriter writer = XmlDictionaryWriter.CreateTextWriter(fs);
        xm.WriteObject(writer, graph);
        Console.WriteLine("Done writing {0}", fileName);
    }

    private void Run()
    {
        // Create the object to write to a file.
        Company graph = new Company();
        graph.Name = "cohowinery.com";

        // Create a DataContractSerializer and a NetDataContractSerializer.
        // Pass either one to the WriteObjectWithInstance method.
        DataContractSerializer dcs = new DataContractSerializer(typeof(Company));
        NetDataContractSerializer ndcs = new NetDataContractSerializer();
        WriteObjectWithInstance(dcs, graph, @"datacontract.xml");
        WriteObjectWithInstance(ndcs, graph, @"netDatacontract.xml");
    }

    [DataContract]
    public class Company
    {
        [DataMember]
        public string Name;
    }

    static void Main()
    {
        try
        {
            Console.WriteLine("Starting");
            Test t = new Test();
            t.Run();
            Console.WriteLine("Done");
            Console.ReadLine();
        }

        catch (InvalidDataContractException iExc)
        {
            Console.WriteLine("You have an invalid data contract: ");
            Console.WriteLine(iExc.Message);
            Console.ReadLine();
        }

        catch (SerializationException serExc)
        {
            Console.WriteLine("There is a problem with the instance:");
            Console.WriteLine(serExc.Message);
            Console.ReadLine();
        }

        catch (QuotaExceededException qExc)
        {
            Console.WriteLine("The quota has been exceeded");
            Console.WriteLine(qExc.Message);
            Console.ReadLine();
        }
        catch (Exception exc)
        {
            Console.WriteLine(exc.Message);
            Console.WriteLine(exc.ToString());
            Console.ReadLine();
        }
    }
Public Class Test
    
    Private Sub WriteObjectWithInstance(ByVal xm As XmlObjectSerializer, _
      ByVal graph As Company, ByVal fileName As String) 
        ' Use either the XmlDataContractSerializer or NetDataContractSerializer,
        ' or any other class that inherits from XmlObjectSerializer to write with.
        Console.WriteLine(xm.GetType())
        Dim fs As New FileStream(fileName, FileMode.Create)
        Dim writer As XmlDictionaryWriter = XmlDictionaryWriter.CreateTextWriter(fs)
        xm.WriteObject(writer, graph)
        Console.WriteLine("Done writing {0}", fileName)
    
    End Sub 
    
    
    Private Sub Run() 
        ' Create the object to write to a file.
        Dim graph As New Company()
        graph.Name = "cohowinery.com"
        
        ' Create a DataContractSerializer and a NetDataContractSerializer.
        ' Pass either one to the WriteObjectWithInstance method.
        Dim dcs As New DataContractSerializer(GetType(Company))
        Dim ndcs As New NetDataContractSerializer()
        WriteObjectWithInstance(dcs, graph, "datacontract.xml")
        WriteObjectWithInstance(ndcs, graph, "netDatacontract.xml")
    
    End Sub 
    
    <DataContract()>  _
    Public Class Company
        <DataMember()>  _
        Public Name As String
    End Class 
    
    
    Shared Sub Main() 
        Try
            Console.WriteLine("Starting")
            Dim t As New Test()
            t.Run()
            Console.WriteLine("Done")
            Console.ReadLine()
        
        Catch iExc As InvalidDataContractException
            Console.WriteLine("You have an invalid data contract: ")
            Console.WriteLine(iExc.Message)
            Console.ReadLine()
        
        Catch serExc As SerializationException
            Console.WriteLine("There is a problem with the instance:")
            Console.WriteLine(serExc.Message)
            Console.ReadLine()
        
        Catch qExc As QuotaExceededException
            Console.WriteLine("The quota has been exceeded")
            Console.WriteLine(qExc.Message)
            Console.ReadLine()
        Catch exc As Exception
            Console.WriteLine(exc.Message)
            Console.WriteLine(exc.ToString())
            Console.ReadLine()
        End Try
    
    End Sub 
End Class

Remarques

Étendez XmlObjectSerializer pour créer votre propre sérialiseur afin de sérialiser et désérialiser des objets. La classe DataContractSerializer et la classe NetDataContractSerializer héritent toutes les deux de XmlObjectSerializer et sont utilisées pour sérialiser et désérialiser des objets qui se conforment aux règles de contrat de données (objets créés à l'aide des attributs DataContractAttribute et DataMemberAttribute).

Notes pour les responsables de l’implémentation

Lorsque vous héritez de XmlObjectSerializer, vous devez substituer les membres suivants : WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter). En outre, les méthodes IsStartObject et ReadObject doivent être implémentées pour la lecture et la désérialisation.

Constructeurs

XmlObjectSerializer()

Initialise une nouvelle instance de la classe XmlObjectSerializer.

Méthodes

Equals(Object)

Détermine si l'objet spécifié est égal à l'objet actuel.

(Hérité de Object)
GetHashCode()

Fait office de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient le Type de l'instance actuelle.

(Hérité de Object)
IsStartObject(XmlDictionaryReader)

Obtient une valeur qui spécifie si le XmlDictionaryReader est positionné sur un élément XML qui peut être lu.

IsStartObject(XmlReader)

Obtient une valeur qui spécifie si le XmlReader est positionné sur un élément XML qui peut être lu.

MemberwiseClone()

Crée une copie superficielle du Object actuel.

(Hérité de Object)
ReadObject(Stream)

Lit le flux ou le document XML avec un Stream et retourne l'objet désérialisé.

ReadObject(XmlDictionaryReader)

Lit le document ou le flux XML avec un XmlDictionaryReader et retourne l'objet désérialisé.

ReadObject(XmlDictionaryReader, Boolean)

Lit le flux ou le document XML avec un XmlDictionaryReader et retourne l'objet désérialisé ; il vous permet également de spécifier si le sérialiseur peut lire les données avant de tenter de les lire.

ReadObject(XmlReader)

Lit le document ou le flux XML avec un XmlReader et retourne l'objet désérialisé.

ReadObject(XmlReader, Boolean)

Lit le document ou le flux XML avec un XmlReader et retourne l'objet désérialisé ; il vous permet également de spécifier si le sérialiseur peut lire les données avant de tenter de les lire.

ToString()

Retourne une chaîne qui représente l'objet actuel.

(Hérité de Object)
WriteEndObject(XmlDictionaryWriter)

Écrit la fin des données d'objet comme un élément XML de fermeture dans le document ou le flux XML avec un XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Écrit la fin des données d'objet comme un élément XML de fermeture dans le document ou le flux XML avec un XmlWriter.

WriteObject(Stream, Object)

Écrit le contenu complet (début, contenu et fin) de l'objet dans le flux ou le document XML avec le Stream spécifié.

WriteObject(XmlDictionaryWriter, Object)

Écrit le contenu complet (début, contenu et fin) de l'objet dans le flux ou le document XML avec le XmlDictionaryWriter spécifié.

WriteObject(XmlWriter, Object)

Écrit le contenu complet (début, contenu et fin) de l'objet dans le flux ou le document XML avec le XmlWriter spécifié.

WriteObjectContent(XmlDictionaryWriter, Object)

Écrit uniquement le contenu de l'objet dans le flux ou le document XML à l'aide du XmlDictionaryWriter spécifié.

WriteObjectContent(XmlWriter, Object)

Écrit uniquement le contenu de l'objet dans le flux ou le document XML avec le XmlWriter spécifié.

WriteStartObject(XmlDictionaryWriter, Object)

Écrit le début des données de l'objet comme un élément XML d'ouverture à l'aide du XmlDictionaryWriter spécifié.

WriteStartObject(XmlWriter, Object)

Écrit le début des données de l'objet comme un élément XML d'ouverture à l'aide du XmlWriter spécifié.

S’applique à

Voir aussi