Eventualmente, no desenvolvimento de aplicações, encontramos situações onde é necessário transformar um objeto em XML, ou seja, serializar um objeto em XML. Neste post mostrarei como serializar e deserializar objetos de forma simples com .NET.
O .NET Framework oferece “N” recursos para efetuar a serialização de objetos. Neste exemplo utilizarei o XmlSerializer (do namespace System.Xml.Serialization) para efetuar esta tarefa.
Vejas os passos para efetuar esta tarefa:
1 – Crie uma classe (entidade) para que possamos utilizar como teste. Como exemplo, criei uma classe chamada Produto:
public class Produto
{
private int id;
private string nome;
private decimal valor;
public int Id
{
get { return id; }
set { id = value; }
}
public string Nome
{
get { return nome; }
set { nome = value; }
}
public decimal Valor
{
get { return valor; }
set { valor = value; }
}
public Produto()
{
}
public Produto(int id, string nome, decimal valor)
{
this.id = id;
this.nome = nome;
this.valor = valor;
}
}
2 – Crei uma classe chamada Serializador, que será responsável pelas tarefas de Serializar e Deserializar os objetos:
using System;
using System.IO;
using System.Xml.Serialization;
public class Serializador
{
// Serializa o objeto
public static string Serializar(object objeto)
{
StringWriter writer = new StringWriter();
XmlSerializer serializer = new XmlSerializer(objeto.GetType());
serializer.Serialize(writer, objeto);
return writer.ToString();
}
// Deserializa o objeto
public static object Deserializar(string xml, Type tipo)
{
StringReader reader = new StringReader(xml);
XmlSerializer serializer = new XmlSerializer(tipo);
return serializer.Deserialize(reader);
}
}
3 – Por fim, crie um Webform contendo um TextBox do tipo MultiLine e uma tabela com três Labels (Id, Nome e Valor), para que possamos testar os métodos da classe Serializador:
Veja o código Source do Webform:
<form id="form1" runat="server">
<div>
<b>Conteúdo Serializado</b><br />
<asp:TextBox ID="TextBox1" runat="server" Height="140px" TextMode="MultiLine" Width="550px"></asp:TextBox>
<br />
<br />
<b>Conteúdo Deserializado</b>
<br />
<table>
<tr>
<td>Código</td>
<td> </td>
<td><asp:Label ID="lblId" runat="server"></asp:Label></td>
</tr>
<tr>
<td>Nome</td>
<td> </td>
<td><asp:Label ID="lblNome" runat="server"></asp:Label></td>
</tr>
<tr>
<td>Valor</td>
<td> </td>
<td><asp:Label ID="lblValor" runat="server"></asp:Label></td>
</tr>
</table>
</div>
</form>
Veja o código implementado para testar as funcionalidades no Webform:
protected void Page_Load(object sender, EventArgs e)
{
// Serializando
Produto produto = new Produto(1, "Produto 1", 15); TextBox1.Text =
Serializador.Serializar(produto);
// Deserializando
produto = (Produto)Serializador.Deserializar(TextBox1.Text, typeof(Produto));
lblId.Text = produto.Id.ToString();
lblNome.Text = produto.Nome;
lblValor.Text = produto.Valor.ToString();
}
Executando o projeto veremos o seguinte resultado:

Resultado da execução do webform de teste de serialização e deserialização
Viram com é possível serializar e deserializar objetos utilizando de muito pouco esforço o .NET framework?
Até a próxima e bons códigos!