Compartilhar via


XmlObjectSerializer Classe

Definição

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

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

Exemplos

O exemplo a seguir mostra um método chamado WriteObjectWithInstance que inclui um XmlObjectSerializer como parâmetro. O método serializa um objeto usando o DataContractSerializer ou NetDataContractSerializer chamando 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

Comentários

Estenda o XmlObjectSerializer para criar seu próprio serializador para serializar e desserializar objetos. DataContractSerializer A classe e a NetDataContractSerializer classe herdam do XmlObjectSerializer e são usadas para serializar e desserializar objetos que estão em conformidade com as regras de contrato de dados (objetos criados usando o DataContractAttribute e o DataMemberAttribute).

Notas aos Implementadores

Ao herdar de XmlObjectSerializer, você deve substituir 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

XmlObjectSerializer()

Inicializa uma nova instância da classe XmlObjectSerializer.

Métodos

Equals(Object)

Determina se o objeto especificado é igual ao objeto atual.

(Herdado de Object)
GetHashCode()

Serve como a função de hash padrão.

(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 é posicionado sobre um elemento XML que pode ser lido.

IsStartObject(XmlReader)

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

MemberwiseClone()

Cria uma cópia superficial do Object atual.

(Herdado de Object)
ReadObject(Stream)

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

ReadObject(XmlDictionaryReader)

Lê o documento ou o fluxo XML com um XmlDictionaryReader e retorna o objeto desserializado.

ReadObject(XmlDictionaryReader, Boolean)

Lê o fluxo ou o documento XML com um XmlDictionaryReader e retorna o objeto desserializado; ele também permite que você especifique se o serializador pode ler os dados antes de tentar lê-los.

ReadObject(XmlReader)

Lê o documento ou o fluxo XML com um XmlReader e retorna o objeto desserializado.

ReadObject(XmlReader, Boolean)

Lê o documento ou o fluxo XML com um XmlReader e retorna o objeto desserializado; ele também permite que você especifique se o serializador pode ler os dados antes de tentar lê-los.

ToString()

Retorna uma cadeia de caracteres que representa o objeto atual.

(Herdado de Object)
WriteEndObject(XmlDictionaryWriter)

Grava o final dos dados de objeto como um elemento XML de fechamento no documento ou fluxo XML com um XmlDictionaryWriter.

WriteEndObject(XmlWriter)

Grava o final dos dados de objeto como um elemento XML de fechamento no documento ou fluxo XML com um XmlWriter.

WriteObject(Stream, Object)

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

WriteObject(XmlDictionaryWriter, Object)

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

WriteObject(XmlWriter, Object)

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

WriteObjectContent(XmlDictionaryWriter, Object)

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

WriteObjectContent(XmlWriter, Object)

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

WriteStartObject(XmlDictionaryWriter, Object)

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

WriteStartObject(XmlWriter, Object)

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

Aplica-se a

Confira também