XmlObjectSerializer Klass

Definition

Tillhandahåller basklassen som används för att serialisera objekt som XML-strömmar eller dokument. Den här klassen är abstrakt.

public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
Arv
XmlObjectSerializer
Härledda

Exempel

I följande exempel visas en metod med namnet WriteObjectWithInstance som innehåller en XmlObjectSerializer som en parameter. Metoden serialiserar ett objekt med hjälp av antingen DataContractSerializer eller NetDataContractSerializer genom att anropa WriteObject metoden.

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

Kommentarer

XmlObjectSerializer Utöka för att skapa en egen serialiserare för att serialisera och deserialisera objekt. DataContractSerializer Både klassen och NetDataContractSerializer klassen ärver från XmlObjectSerializer och används för att serialisera och deserialisera objekt som överensstämmer med datakontraktsregler (objekt som skapats med och DataContractAttributeDataMemberAttribute).

Anteckningar till implementerare

När du ärver från XmlObjectSerializermåste du åsidosätta följande medlemmar: WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter). Dessutom IsStartObject måste metoderna och ReadObject implementeras för läsning och deserialisering.

Konstruktorer

Name Description
XmlObjectSerializer()

Initierar en ny instans av XmlObjectSerializer klassen.

Metoder

Name Description
Equals(Object)

Avgör om det angivna objektet är lika med det aktuella objektet.

(Ärvd från Object)
GetHashCode()

Fungerar som standard-hash-funktion.

(Ärvd från Object)
GetType()

Hämtar den aktuella instansen Type .

(Ärvd från Object)
IsStartObject(XmlDictionaryReader)

Hämtar ett värde som anger om XmlDictionaryReader är placerat över ett XML-element som kan läsas.

IsStartObject(XmlReader)

Hämtar ett värde som anger om XmlReader är placerat över ett XML-element som kan läsas.

MemberwiseClone()

Skapar en ytlig kopia av den aktuella Object.

(Ärvd från Object)
ReadObject(Stream)

Läser XML-dataströmmen eller dokumentet med ett Stream och returnerar det deserialiserade objektet.

ReadObject(XmlDictionaryReader, Boolean)

Läser XML-dataströmmen eller dokumentet med ett XmlDictionaryReader och returnerar det deserialiserade objektet. Du kan också ange om serialiseraren kan läsa data innan du försöker läsa dem.

ReadObject(XmlDictionaryReader)

Läser XML-dokumentet eller dataströmmen med ett XmlDictionaryReader och returnerar det deserialiserade objektet.

ReadObject(XmlReader, Boolean)

Läser XML-dokumentet eller dataströmmen med ett XmlReader och returnerar det deserialiserade objektet. Du kan också ange om serialiseraren kan läsa data innan du försöker läsa dem.

ReadObject(XmlReader)

Läser XML-dokumentet eller dataströmmen med ett XmlReader och returnerar det deserialiserade objektet.

ToString()

Returnerar en sträng som representerar det aktuella objektet.

(Ärvd från Object)
WriteEndObject(XmlDictionaryWriter)

Skriver slutet av objektdata som ett avslutande XML-element till XML-dokumentet eller dataströmmen med en XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Skriver slutet av objektdata som ett avslutande XML-element till XML-dokumentet eller dataströmmen med en XmlWriter.

WriteObject(Stream, Object)

Skriver det fullständiga innehållet (start, innehåll och slut) för objektet till XML-dokumentet eller dataströmmen med angivet Stream.

WriteObject(XmlDictionaryWriter, Object)

Skriver det fullständiga innehållet (start, innehåll och slut) för objektet till XML-dokumentet eller dataströmmen med angivet XmlDictionaryWriter.

WriteObject(XmlWriter, Object)

Skriver det fullständiga innehållet (start, innehåll och slut) för objektet till XML-dokumentet eller dataströmmen med angivet XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object)

Skriver endast innehållet i objektet till XML-dokumentet eller dataströmmen med den angivna XmlDictionaryWriter.

WriteObjectContent(XmlWriter, Object)

Skriver endast innehållet i objektet till XML-dokumentet eller dataströmmen med angivet XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object)

Skriver början av objektets data som ett inledande XML-element med den angivna XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

Skriver början av objektets data som ett inledande XML-element med den angivna XmlWriter.

Gäller för

Se även