Serialização - com xml

<< Click to Display Table of Contents >>

Navigation:  Funções > Serialização >

Serialização - com xml

Previous pageReturn to chapter overviewNext page

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();

   }

}