XmlObjectSerializer Classe

Définition

Fournit la classe de base utilisée pour sérialiser des objets en tant que flux ou documents 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 montre une méthode nommée WriteObjectWithInstance qui inclut un XmlObjectSerializer paramètre. La méthode sérialise un objet à l’aide de la DataContractSerializer méthode ou NetDataContractSerializer en appelant la WriteObject méthode.

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 la XmlObjectSerializer création de votre propre sérialiseur pour sérialiser et désérialiser des objets. La classe et la DataContractSerializerNetDataContractSerializer classe héritent de l’objet XmlObjectSerializer et sont utilisés pour sérialiser et désérialiser des objets conformes aux règles de contrat de données (objets créés à l’aide du DataContractAttribute et du DataMemberAttribute).

Notes pour les responsables de l’implémentation

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

Constructeurs

Nom Description
XmlObjectSerializer()

Initialise une nouvelle instance de la classe XmlObjectSerializer.

Méthodes

Nom Description
Equals(Object)

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

(Hérité de Object)
GetHashCode()

Sert de fonction de hachage par défaut.

(Hérité de Object)
GetType()

Obtient la Type de l’instance actuelle.

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

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

IsStartObject(XmlReader)

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

MemberwiseClone()

Crée une copie superficielle du Objectactuel.

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

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

ReadObject(XmlDictionaryReader, Boolean)

Lit le flux XML ou le document avec un XmlDictionaryReader objet désérialisé 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 le lire.

ReadObject(XmlDictionaryReader)

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

ReadObject(XmlReader, Boolean)

Lit le document xml ou le flux avec un XmlReader objet désérialisé 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 le lire.

ReadObject(XmlReader)

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

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 en tant qu’élément XML fermant dans le document XML ou le flux avec un XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Écrit la fin des données d’objet en tant qu’élément XML fermant dans le document XML ou le flux avec un XmlWriter.

WriteObject(Stream, Object)

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

WriteObject(XmlDictionaryWriter, Object)

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

WriteObject(XmlWriter, Object)

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

WriteObjectContent(XmlDictionaryWriter, Object)

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

WriteObjectContent(XmlWriter, Object)

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

WriteStartObject(XmlDictionaryWriter, Object)

Écrit le début des données de l’objet en tant qu’élément XML ouvrant à l’aide du fichier spécifié XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

Écrit le début des données de l’objet en tant qu’élément XML ouvrant à l’aide du fichier spécifié XmlWriter.

S’applique à

Voir aussi