XmlObjectSerializer Třída

Definice

Poskytuje základní třídu sloužící k serializaci objektů jako datové proudy XML nebo dokumenty. 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í nebo DataContractSerializerNetDataContractSerializer 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šíření k XmlObjectSerializer vytvoření vlastní serializátor serializace a deserializace objektů. DataContractSerializer Třída i NetDataContractSerializer třída dědí z XmlObjectSerializer a se používají k serializaci a deserializaci objektů, které jsou v souladu s pravidly kontraktu DataMemberAttributedat (objekty vytvořené pomocí DataContractAttribute a ).

Poznámky pro implementátory

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

Konstruktory

XmlObjectSerializer()

Inicializuje novou instanci XmlObjectSerializer třídy .

Metody

Equals(Object)

Určí, zda se zadaný objekt rovná aktuálnímu objektu.

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

Slouží jako výchozí hashovací funkce.

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

Type Získá z 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 Objectsouboru .

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

Čte datový proud XML nebo dokument s Stream a vrátí deserializovaný objekt.

ReadObject(XmlDictionaryReader)

Čte dokument XML nebo datový proud s XmlDictionaryReader a vrátí deserializovaný objekt.

ReadObject(XmlDictionaryReader, Boolean)

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

ReadObject(XmlReader)

Čte dokument XML nebo datový proud s XmlReader a vrátí deserializovaný objekt.

ReadObject(XmlReader, Boolean)

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

ToString()

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

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

Zapíše konec dat objektu jako uzavírací element XML do dokumentu XML nebo datového XmlDictionaryWriterproudu pomocí .

WriteEndObject(XmlWriter)

Zapíše konec dat objektu jako uzavírací element XML do dokumentu XML nebo datového XmlWriterproudu pomocí .

WriteObject(Stream, Object)

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

WriteObject(XmlDictionaryWriter, Object)

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

WriteObject(XmlWriter, Object)

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

WriteObjectContent(XmlDictionaryWriter, Object)

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

WriteObjectContent(XmlWriter, Object)

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

WriteStartObject(XmlDictionaryWriter, Object)

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

WriteStartObject(XmlWriter, Object)

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

Platí pro

Viz také