|
<< Click to Display Table of Contents >> Serialização - com xml |
![]() ![]()
|
Introdução
Transforma um objeto em um string xml e volta para objeto
Saída
Flavio Junior, 35, Homem
<?xml version="1.0" encoding="utf-16"?>
<Pessoa xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Nome>Flavio Junior</Nome>
<Idade>35</Idade>
<Genero>Homem</Genero>
</Pessoa>
Flavio Junior, 35, Homem
Using geral
using System;
using System.IO;
using System.Runtime.Serialization.Formatters.Binary;
using System.Text;
using System.Xml.Serialization;
Modelo (precisa ser public e a classe precisa ter um construtor sem parâmetros)
public enum Tipo
{
Homem, Mulher
}
[Serializable]
public class Pessoa
{
public string Nome { get; set; }
public int Idade { get; set; }
public Tipo Genero { get; set; }
public Pessoa()
{
}
public Pessoa(string nome, int idade, Tipo genero)
{
this.Nome = nome;
this.Idade = idade;
this.Genero = genero;
}
public override string ToString()
{
return Nome + ", " + Idade.ToString() + ", " + (Genero == Tipo.Homem ? " Homem" : " Mulher");
}
}
Classe com funções para converter para xml
public class Serializador
{
public static string Serializar(object algumObjeto)
{
StringWriter writer = new StringWriter();
XmlSerializer serializer = new
XmlSerializer(algumObjeto.GetType());
serializer.Serialize(writer, algumObjeto);
return writer.ToString();
}
public static object Deserializar(string xml, Type type)
{
StringReader reader = new StringReader(xml);
XmlSerializer serializer = new XmlSerializer(type);
return serializer.Deserialize(reader);
}
}
Exemplo principal
class Program
{
static void Main(string[] args)
{
Pessoa junior = new Pessoa("Flavio Junior", 35, Tipo.Homem);
Console.WriteLine(junior);
Console.ReadLine();
string xml = Serializador.Serializar(junior);
Console.WriteLine(xml);
// Deserialização
Pessoa p = Serializador.Deserializar(xml, typeof(Pessoa)) as Pessoa;
Console.WriteLine(p);
Console.ReadLine();
}
}