Para documentação em português do Brasil, acesse PT-BR
For English documentation, access EN-US

PT-BR

O componente DotNetMax.Serialization.Xml fornece um serializador XML genérico e um serializador XML tradicionar para o tratamento rápido de arquivos xml em forma de objetos.

1-) Dependências

  • DotNetMax.Common.dll
  • DotNetMax.Serialization.Xml.dll

2-) Visão Geral

O DotNetMax.Serialization.Xml é um componente que faz uso da capacidade generics do .net framework.
Seus principais componentes são:
Componente Funcionalidade
DotNetMax.Serialization.Xml.GenericXmlSerializer Serializador Genérico para XML
DotNetMax.Serialization.Xml.XmlSerializer Serializador Tradicional para XML


Essa documentação destina-se para o (DotNetMax.Serialization.Xml.GenericXmlSerializer). Este possui os seguintes métodos:
Método Parâmetro(s) Funcionalidade
Serialize() Objeto a ser serializado Serializa XML um objeto em um array de bytes
Deserialize() Array de bytes com a representação serializada do objeto Deserializa um objeto a partir de um array de bytes com a representação em XML
SerializeIntoFile() Objeto a ser serializado, caminho do arquivo e se é permitido sobrescrever o arquivo de destino Serializa em XML para um arquivo o objeto
DeserializeFromFile() Caminho do arquivo Deserializa um objeto a partir de um arquivo xml

3-) Começando o Exemplo

Para começar nosso exemplo, vamos utilizar os seguintes objetos abaixo:
[XmlRoot("Usuario")]
public class Usuario
{
    [XmlAttribute("Nome")]
    public string Nome { get; set; }

    [XmlAttribute("Idade")]
    public int Idade { get; set; }

    [XmlArray("Permissoes")]
    [XmlArrayItem("Permissao")]
    public List<Permissao> Permissoes { get; set; }
}

public class Permissao
{
    [XmlAttribute("Nome")]
    public string Chave { get; set; }

    [XmlAttribute("PodeAcessar")]
    public bool PodeAcessar { get; set; }
}

4-) Assinatura do Componente

Para utilizar o componente GenericXmlSerializer é necessário contruir-lo corretamente. Esse componente é do tipo genérico (generics) e sua assinatura é:
DotNetMax.Serialization.Xml.GenericXmlSerializer<T>

5-) Serializando um Objeto para Arquivo

// Cria Usuário
Usuario novoUsuario = new Usuario();
novoUsuario.Nome = "Guilherme Bacellar Moralez";
novoUsuario.Idade = 27;

// Cria 2 Permissões
Permissao novaPermissao1 = new Permissao();
novaPermissao1.Chave = "Administrador";
novaPermissao1.PodeAcessar = true;

Permissao novaPermissao2 = new Permissao();
novaPermissao2.Chave = "Revisor";
novaPermissao2.PodeAcessar = false;

// Adiciona as Permissões na Lista do Usuário
novoUsuario.Permissoes = new List<Permissao>();
novoUsuario.Permissoes.Add(novaPermissao1);
novoUsuario.Permissoes.Add(novaPermissao2);

// Serializa XML
DotNetMax.Serialization.Xml.GenericXmlSerializer<Usuario> serializador = new DotNetMax.Serialization.Xml.GenericXmlSerializer<Usuario>();
serializador.SerializeIntoFile(novoUsuario, "CaminhoDoArquivo.xml", true);

Ao executar o método (SerializeIntoFile), será requerido 3 parâmetros: "data" que é o objeto a ser serializado, "filePath" que é o caminho do arquivo e "overwriteIfExists" que indica ao componente para sobrescrever o arquivo de destino caso exista. Observe que caso o parâmetro (filePath) seja "false" e o arquivo de destino já exista, uma exceção do tipo (DotNetMax.Common.Exception.FileAlreadyExistsException) será lançada pelo componente

6-) Serializando um Objeto para um Array de Bytes

// Cria Usuário
Usuario novoUsuario = new Usuario();
novoUsuario.Nome = "Guilherme Bacellar Moralez";
novoUsuario.Idade = 27;

// Cria 2 Permissões
Permissao novaPermissao1 = new Permissao();
novaPermissao1.Chave = "Administrador";
novaPermissao1.PodeAcessar = true;

Permissao novaPermissao2 = new Permissao();
novaPermissao2.Chave = "Revisor";
novaPermissao2.PodeAcessar = false;

// Adiciona as Permissões na Lista do Usuário
novoUsuario.Permissoes = new List<Permissao>();
novoUsuario.Permissoes.Add(novaPermissao1);
novoUsuario.Permissoes.Add(novaPermissao2);

// Serializa para Array de Bytes
byte[] dadosSerializadosDoUsuario = serializador.Serialize(novoUsuario);

Observe que o processo de serialização para array de bytes é muito parecido com a serialização para arquivos. A maior diferença que é neste cenário o conteúdo serializado em XML ficará na memória da aplicação e não no disco.

7-) Deserializando um Objeto a partir de um Arquivo

Para deserializar é bem simples. Basta declarar o GenericXmlSerializer e executar o método (DeserializeFromFile).
// Deserializa
DotNetMax.Serialization.Xml.GenericXmlSerializer<Usuario> deserializador = new DotNetMax.Serialization.Xml.GenericXmlSerializer<Usuario>();
Usuario usuarioDeserializado = deserializador.DeserializeFromFile("CaminhoDoArquivo.xml");

8-) Deserializando um Objeto a partir de um Array de Bytes

Da mesma forma que os processos de serialização são muito parecidos, os processos de deserialização também o são:
// Deserializa
DotNetMax.Serialization.Xml.GenericXmlSerializer<Usuario> deserializador = new DotNetMax.Serialization.Xml.GenericXmlSerializer<Usuario>();

// Deserializa a partir de um Array de Bytes
Usuario usuarioDeserializado= deserializador.Deserialize(dadosSerializadosDoUsuario);

Atente que a variável (dadosSerializadosDoUsuario) foi criada no código do exemplo (6) e contém o array de bytes com a representação em XML do objeto.

EN-US

English Documentations is under construction

Last edited Jun 30, 2010 at 10:35 AM by guibacellar, version 3

Comments

No comments yet.