Udostępnij za pośrednictwem


XmlObjectSerializer Klasa

Definicja

Udostępnia klasę bazową używaną do serializacji obiektów jako strumieni XML lub dokumentów. Ta klasa jest abstrakcyjna.

public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
Dziedziczenie
XmlObjectSerializer
Pochodne

Przykłady

W poniższym przykładzie pokazano metodę o nazwie WriteObjectWithInstance , która zawiera parametr XmlObjectSerializer jako parametr. Metoda serializuje obiekt przy użyciu DataContractSerializer metody lub NetDataContractSerializer przez wywołanie WriteObject metody .

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

Uwagi

Rozszerz element , XmlObjectSerializer aby utworzyć własny serializator, aby serializować i deserializować obiekty. DataContractSerializer Zarówno klasa, jak i NetDataContractSerializer klasa dziedziczą z XmlObjectSerializer klasy i są używane do serializacji i deserializacji obiektów, które są zgodne z regułami kontraktu danych (obiekty utworzone przy użyciu DataContractAttributeDataMemberAttributei ).

Uwagi dotyczące implementowania

Podczas dziedziczenia z XmlObjectSerializerprogramu należy zastąpić następujące elementy członkowskie: WriteStartObject(XmlDictionaryWriter, Object), , WriteObjectContent(XmlDictionaryWriter, Object)WriteEndObject(XmlDictionaryWriter). IsStartObject Ponadto metody i ReadObject muszą być implementowane do odczytywania i deserializacji.

Konstruktory

XmlObjectSerializer()

Inicjuje nowe wystąpienie klasy XmlObjectSerializer.

Metody

Equals(Object)

Określa, czy dany obiekt jest taki sam, jak bieżący obiekt.

(Odziedziczone po Object)
GetHashCode()

Służy jako domyślna funkcja skrótu.

(Odziedziczone po Object)
GetType()

Type Pobiera wartość bieżącego wystąpienia.

(Odziedziczone po Object)
IsStartObject(XmlDictionaryReader)

Pobiera wartość określającą, czy XmlDictionaryReader element jest umieszczony nad elementem XML, który można odczytać.

IsStartObject(XmlReader)

Pobiera wartość określającą, czy XmlReader element jest umieszczony nad elementem XML, który można odczytać.

MemberwiseClone()

Tworzy płytkią kopię bieżącego Objectelementu .

(Odziedziczone po Object)
ReadObject(Stream)

Odczytuje strumień XML lub dokument z obiektem Stream i zwraca zdeserializowany obiekt.

ReadObject(XmlDictionaryReader)

Odczytuje dokument XML lub strumień za pomocą obiektu XmlDictionaryReader i zwraca obiekt deserializowany.

ReadObject(XmlDictionaryReader, Boolean)

Odczytuje strumień XML lub dokument z obiektem XmlDictionaryReader i zwraca zdeserializowany obiekt. Umożliwia również określenie, czy serializator może odczytywać dane przed próbą odczytania go.

ReadObject(XmlReader)

Odczytuje dokument XML lub strumień za pomocą obiektu XmlReader i zwraca obiekt deserializowany.

ReadObject(XmlReader, Boolean)

Odczytuje dokument XML lub strumień za pomocą XmlReader obiektu i zwraca zdeserializowany obiekt. Umożliwia również określenie, czy serializator może odczytywać dane przed próbą odczytania go.

ToString()

Zwraca ciąg reprezentujący bieżący obiekt.

(Odziedziczone po Object)
WriteEndObject(XmlDictionaryWriter)

Zapisuje koniec danych obiektu jako zamykający element XML do dokumentu XML lub strumienia za pomocą elementu XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Zapisuje koniec danych obiektu jako zamykający element XML do dokumentu XML lub strumienia za pomocą elementu XmlWriter.

WriteObject(Stream, Object)

Zapisuje pełną zawartość (początek, zawartość i koniec) obiektu w dokumencie XML lub strumieniu przy użyciu określonego Streamelementu .

WriteObject(XmlDictionaryWriter, Object)

Zapisuje pełną zawartość (początek, zawartość i koniec) obiektu w dokumencie XML lub strumieniu przy użyciu określonego XmlDictionaryWriterelementu .

WriteObject(XmlWriter, Object)

Zapisuje pełną zawartość (początek, zawartość i koniec) obiektu w dokumencie XML lub strumieniu przy użyciu określonego XmlWriterelementu .

WriteObjectContent(XmlDictionaryWriter, Object)

Zapisuje tylko zawartość obiektu w dokumencie XML lub strumieniu przy użyciu określonego XmlDictionaryWriterelementu .

WriteObjectContent(XmlWriter, Object)

Zapisuje tylko zawartość obiektu w dokumencie XML lub strumieniu o określonym obiekcie XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object)

Zapisuje początek danych obiektu jako otwierający element XML przy użyciu określonego XmlDictionaryWriterelementu .

WriteStartObject(XmlWriter, Object)

Zapisuje początek danych obiektu jako otwierający element XML przy użyciu określonego XmlWriterelementu .

Dotyczy

Zobacz też