XmlObjectSerializer Klasse

Definition

Stellt die Basisklasse bereit, die verwendet wird, um Objekte als XML-Streams oder XML-Dokumente zu serialisieren. Diese Klasse ist abstrakt.

public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
Vererbung
XmlObjectSerializer
Abgeleitet

Beispiele

Das folgende Beispiel zeigt eine Methode mit der Bezeichnung WriteObjectWithInstance, die einen XmlObjectSerializer als Parameter enthält. Die Methode serialisiert ein Objekt, indem sie den DataContractSerializer oder den NetDataContractSerializer verwendet oder indem sie die WriteObject-Methode aufruft.

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

Hinweise

Erweitern Sie den XmlObjectSerializer, um ein eigenes Serialisierungsprogramm zur Serialisierung und Deserialisierung von Objekten zu erstellen. Sowohl die DataContractSerializer-Klasse als auch die NetDataContractSerializer-Klasse erben vom XmlObjectSerializer und werden zur Serialisierung und Deserialisierung von Objekten verwendet, die Datenvertragsregeln entsprechen (Objekte, die mit dem DataContractAttribute und dem DataMemberAttribute erstellt wurden).

Hinweise für Ausführende

Wenn Sie von XmlObjectSerializer erben, müssen Sie die folgenden Member überschreiben: WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter). Außerdem müssen die IsStartObject-Methode und die ReadObject-Methode zum Lesen und Deserialisieren implementiert werden.

Konstruktoren

XmlObjectSerializer()

Initialisiert eine neue Instanz der XmlObjectSerializer-Klasse.

Methoden

Equals(Object)

Bestimmt, ob das angegebene Objekt gleich dem aktuellen Objekt ist.

(Geerbt von Object)
GetHashCode()

Fungiert als Standardhashfunktion.

(Geerbt von Object)
GetType()

Ruft den Type der aktuellen Instanz ab.

(Geerbt von Object)
IsStartObject(XmlDictionaryReader)

Ruft einen Wert ab, der angibt, ob der XmlDictionaryReader auf ein XML-Element positioniert ist, das gelesen werden kann.

IsStartObject(XmlReader)

Ruft einen Wert ab, der angibt, ob der XmlReader auf ein XML-Element positioniert ist, das gelesen werden kann.

MemberwiseClone()

Erstellt eine flache Kopie des aktuellen Object.

(Geerbt von Object)
ReadObject(Stream)

Liest den XML-Stream oder das XML-Dokument mit einem Stream und gibt das deserialisierte Objekt zurück.

ReadObject(XmlDictionaryReader)

Liest das XML-Dokument oder den XML-Stream mit einem XmlDictionaryReader und gibt das deserialisierte Objekt zurück.

ReadObject(XmlDictionaryReader, Boolean)

Liest den XML-Stream oder das XML-Dokument mit einem XmlDictionaryReader und gibt das deserialisierte Objekt zurück; Sie haben damit auch die Möglichkeit anzugeben, ob das Serialisierungsprogramm die Daten lesen kann, bevor der Leseversuch erfolgt.

ReadObject(XmlReader)

Liest das XML-Dokument oder den XML-Stream mit einem XmlReader und gibt das deserialisierte Objekt zurück.

ReadObject(XmlReader, Boolean)

Liest das XML-Dokument oder den XML-Stream mit einem XmlReader und gibt das deserialisierte Objekt zurück; Sie haben damit auch die Möglichkeit anzugeben, ob das Serialisierungsprogramm die Daten lesen kann, bevor der Leseversuch erfolgt.

ToString()

Gibt eine Zeichenfolge zurück, die das aktuelle Objekt darstellt.

(Geerbt von Object)
WriteEndObject(XmlDictionaryWriter)

Schreibt das Ende der Objektdaten als abschließendes XML-Element in das XML-Dokument oder den XML-Stream mit einem XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Schreibt das Ende der Objektdaten als abschließendes XML-Element in das XML-Dokument oder den XML-Stream mit einem XmlWriter.

WriteObject(Stream, Object)

Schreibt den vollständigen Inhalt (Anfang, Inhalt und Ende) des Objekts in das XML-Dokument oder den XML-Stream mit dem angegebenen Stream.

WriteObject(XmlDictionaryWriter, Object)

Schreibt den vollständigen Inhalt (Anfang, Inhalt und Ende) des Objekts in das XML-Dokument oder den XML-Stream mit dem angegebenen XmlDictionaryWriter.

WriteObject(XmlWriter, Object)

Schreibt den vollständigen Inhalt (Anfang, Inhalt und Ende) des Objekts in das XML-Dokument oder den XML-Stream mit dem angegebenen XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object)

Schreibt nur den Inhalt des Objekts unter Verwendung des angegebenen XmlDictionaryWriter in das XML-Dokument oder den XML-Stream.

WriteObjectContent(XmlWriter, Object)

Schreibt nur den Inhalt des Objekts unter Verwendung des angegebenen XmlWriter in das XML-Dokument oder den XML-Stream.

WriteStartObject(XmlDictionaryWriter, Object)

Schreibt den Anfang der Daten des Objekts als ein öffnendes XML-Element unter Verwendung des angegebenen XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

Schreibt den Anfang der Daten des Objekts als ein öffnendes XML-Element unter Verwendung des angegebenen XmlWriter.

Gilt für

Siehe auch