XmlObjectSerializer Classe

Definição

Fornece a classe base usada para serializar objetos como fluxos XML ou documentos. Esta aula é abstrata.

public ref class XmlObjectSerializer abstract
public abstract class XmlObjectSerializer
type XmlObjectSerializer = class
Public MustInherit Class XmlObjectSerializer
Herança
XmlObjectSerializer
Derivado

Exemplos

O exemplo seguinte mostra um método nomeado WriteObjectWithInstance que inclui um XmlObjectSerializer parâmetro as. O método serializa um objeto usando o DataContractSerializer ou NetDataContractSerializer ao chamar o WriteObject método.

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

Observações

Estende o XmlObjectSerializer para criar o teu próprio serializador para serializar e desserializar objetos. Tanto a DataContractSerializer classe como a NetDataContractSerializer classe herdam do XmlObjectSerializer e são usadas para serializar e desserializar objetos que cumprem regras de contrato de dados (objetos criados usando o DataContractAttribute e o DataMemberAttribute).

Notas para Implementadores

Quando herdas de XmlObjectSerializer, deves sobrepor os seguintes membros: WriteStartObject(XmlDictionaryWriter, Object), WriteObjectContent(XmlDictionaryWriter, Object), WriteEndObject(XmlDictionaryWriter). Além disso, os IsStartObject métodos e ReadObject devem ser implementados para leitura e desserialização.

Construtores

Name Description
XmlObjectSerializer()

Inicializa uma nova instância da XmlObjectSerializer classe.

Métodos

Name Description
Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como função de hash predefinida.

(Herdado de Object)
GetType()

Obtém o Type da instância atual.

(Herdado de Object)
IsStartObject(XmlDictionaryReader)

Obtém um valor que especifica se o XmlDictionaryReader está posicionado sobre um elemento XML que pode ser lido.

IsStartObject(XmlReader)

Obtém um valor que especifica se o XmlReader está posicionado sobre um elemento XML que pode ser lido.

MemberwiseClone()

Cria uma cópia superficial do atual Object.

(Herdado de Object)
ReadObject(Stream)

Lê o fluxo ou documento XML com um Stream e devolve o objeto desserializado.

ReadObject(XmlDictionaryReader, Boolean)

Lê o fluxo ou documento XML com um XmlDictionaryReader e devolve o objeto deserializado; também permite especificar se o serializador pode ler os dados antes de tentar lê-los.

ReadObject(XmlDictionaryReader)

Lê o documento ou fluxo XML com um XmlDictionaryReader e devolve o objeto deserializado.

ReadObject(XmlReader, Boolean)

Lê o documento ou fluxo XML com um XmlReader e devolve o objeto deserializado; também permite especificar se o serializador pode ler os dados antes de tentar lê-los.

ReadObject(XmlReader)

Lê o documento ou fluxo XML com um XmlReader e devolve o objeto deserializado.

ToString()

Devolve uma cadeia que representa o objeto atual.

(Herdado de Object)
WriteEndObject(XmlDictionaryWriter)

Escreve o final dos dados do objeto como um elemento XML de encerramento no documento ou fluxo XML com um XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Escreve o final dos dados do objeto como um elemento XML de encerramento no documento ou fluxo XML com um XmlWriter.

WriteObject(Stream, Object)

Escreve o conteúdo completo (início, conteúdo e fim) do objeto no documento ou fluxo XML com o especificado Stream.

WriteObject(XmlDictionaryWriter, Object)

Escreve o conteúdo completo (início, conteúdo e fim) do objeto no documento ou fluxo XML com o especificado XmlDictionaryWriter.

WriteObject(XmlWriter, Object)

Escreve o conteúdo completo (início, conteúdo e fim) do objeto no documento ou fluxo XML com o especificado XmlWriter.

WriteObjectContent(XmlDictionaryWriter, Object)

Escreve apenas o conteúdo do objeto no documento ou fluxo XML usando o arquivo especificado XmlDictionaryWriter.

WriteObjectContent(XmlWriter, Object)

Escreve apenas o conteúdo do objeto no documento XML ou fluxo com o especificado XmlWriter.

WriteStartObject(XmlDictionaryWriter, Object)

Escreve o início dos dados do objeto como um elemento XML de abertura usando o especificado XmlDictionaryWriter.

WriteStartObject(XmlWriter, Object)

Escreve o início dos dados do objeto como um elemento XML de abertura usando o especificado XmlWriter.

Aplica-se a

Ver também