Sdílet prostřednictvím


XmlObjectSerializer Třída

Definice

Poskytuje základní třídu používanou k serializaci objektů jako datových proudů XML nebo dokumentů. Tato třída je abstraktní.

public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
Dědičnost
XmlObjectSerializer
Odvozené

Příklady

Následující příklad ukazuje metodu s názvem WriteObjectWithInstance, která obsahuje XmlObjectSerializer jako parametr. Metoda serializuje objekt pomocí DataContractSerializer nebo NetDataContractSerializer voláním 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

Poznámky

Rozšiřte XmlObjectSerializer a vytvořte vlastní serializátor pro serializaci a deserializaci objektů. Třída DataContractSerializer i třída NetDataContractSerializer dědí z XmlObjectSerializer a slouží k serializaci a deserializaci objektů, které odpovídají pravidlům kontraktu dat (objekty vytvořené pomocí DataContractAttribute a DataMemberAttribute).

Poznámky pro implementátory

Při dědění z XmlObjectSerializerje nutné přepsat následující členy: WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter). Kromě toho musí být pro čtení a deserializaci implementovány metody IsStartObject a ReadObject.

Konstruktory

XmlObjectSerializer()

Inicializuje novou instanci XmlObjectSerializer třídy.

Metody

Equals(Object)

Určuje, zda je zadaný objekt roven aktuálnímu objektu.

(Zděděno od Object)
GetHashCode()

Slouží jako výchozí funkce hash.

(Zděděno od Object)
GetType()

Získá Type aktuální instance.

(Zděděno od Object)
IsStartObject(XmlDictionaryReader)

Získá hodnotu, která určuje, zda XmlDictionaryReader je umístěna nad element XML, který lze číst.

IsStartObject(XmlReader)

Získá hodnotu, která určuje, zda XmlReader je umístěna nad element XML, který lze číst.

MemberwiseClone()

Vytvoří mělkou kopii aktuálního Object.

(Zděděno od Object)
ReadObject(Stream)

Přečte datový proud XML nebo dokument s Stream a vrátí deserializovaný objekt.

ReadObject(XmlDictionaryReader, Boolean)

Přečte datový proud XML nebo dokument s XmlDictionaryReader a vrátí deserializovaný objekt; umožňuje také určit, zda serializátor může číst data před pokusem o jeho čtení.

ReadObject(XmlDictionaryReader)

Přečte dokument XML nebo datový proud s XmlDictionaryReader a vrátí deserializovaný objekt.

ReadObject(XmlReader, Boolean)

Přečte dokument XML nebo datový proud s XmlReader a vrátí deserializovaný objekt; umožňuje také určit, zda serializátor může číst data před pokusem o jeho čtení.

ReadObject(XmlReader)

Přečte dokument XML nebo datový proud s XmlReader a vrátí deserializovaný objekt.

ToString()

Vrátí řetězec, který představuje aktuální objekt.

(Zděděno od Object)
WriteEndObject(XmlDictionaryWriter)

Zapíše konec dat objektu jako koncový element XML do dokumentu XML nebo datového proudu s XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Zapíše konec dat objektu jako koncový element XML do dokumentu XML nebo datového proudu s XmlWriter.

WriteObject(Stream, Object)

Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným Stream.

WriteObject(XmlDictionaryWriter, Object)

Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným XmlDictionaryWriter.

WriteObject(XmlWriter, Object)

Zapíše úplný obsah (začátek, obsah a konec) objektu do dokumentu XML nebo datového proudu se zadaným XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object)

Zapíše pouze obsah objektu do dokumentu XML nebo datového proudu pomocí zadaného XmlDictionaryWriter.

WriteObjectContent(XmlWriter, Object)

Zapíše pouze obsah objektu do dokumentu XML nebo datového proudu se zadaným XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object)

Zapíše začátek dat objektu jako levý xml element pomocí zadaného XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

Zapíše začátek dat objektu jako levý xml element pomocí zadaného XmlWriter.

Platí pro

Viz také