XmlObjectSerializer Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
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. |