XmlObjectSerializer Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
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. |