Usar o Visual C# para serializar um objeto no XML

Este artigo fornece um método sobre como serializar um objeto para XML (Linguagem de Marcação Extensível) usando o Visual C#.

Versão original do produto: Visual Studio
Número de KB original: 815813

Resumo

O método descrito neste artigo é útil para persistir o estado de um objeto. O método também é útil para clonar um objeto des serializando o XML de volta para um novo objeto.

Este artigo refere-se aos seguintes namespaces da Biblioteca de Classes da Microsoft .NET Framework:

  • System.Xml
  • System.Xml.Serialization

Requisitos

Este artigo pressupõe que você esteja familiarizado com os seguintes tópicos:

  • Visual Studio
  • Familiaridade geral com XML
  • Familiaridade geral com o Visual C#

Serialização XML

Serialização é o processo de pegar o estado de um objeto e persistê-lo de alguma forma. O .NET Framework inclui objetos poderosos que podem serializar qualquer objeto para XML. O System.Xml.Serialization namespace fornece essa funcionalidade.

Siga estas etapas para criar um aplicativo de console que cria um objeto e serialize seu estado para XML:

  1. No Visual C#, crie um novo projeto de Aplicativo de Console.

  2. No menu Projeto , selecione Adicionar Classe para adicionar uma nova classe ao projeto.

  3. Na caixa de diálogo Adicionar Novo Item , altere o nome da classe para clsPerson.

  4. Selecione Adicionar. Uma nova classe é criada.

  5. Adicione o código a seguir após a instrução de classe clsPerson pública.

    public string FirstName;
    public string MI;
    public string LastName;
    
  6. Alterne para a janela de código para Program.cs no Visual Studio.

  7. void Main No método, declare e crie uma instância da clsPerson classe:

    clsPerson p = new clsPerson();
    
  8. Defina as propriedades do clsPerson objeto:

    p.FirstName = "Jeff";
    p.MI = "A";
    p.LastName = "Price";
    
  9. O Xml.Serialization namespace contém uma XmlSerializer classe que serializa um objeto para XML. Ao criar uma instância de XmlSerializer, você passa o tipo da classe que deseja serializar em seu construtor:

    System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
    
  10. O Serialize método é usado para serializar um objeto para XML. Serializar é sobrecarregado e pode enviar saída para um TextWriter, Streamou XMLWriter objeto. Neste exemplo, você envia a saída para o console:

    x.Serialize(Console.Out,p);
    Console.WriteLine();
    Console.ReadLine();
    

Lista de código completa

using System;

public class clsPerson
{
    public  string FirstName;
    public  string MI;
    public  string LastName;
}

class class1
{
    static void Main(string[] args)
    {
        clsPerson p=new clsPerson();
        p.FirstName = "Jeff";
        p.MI = "A";
        p.LastName = "Price";
        System.Xml.Serialization.XmlSerializer x = new System.Xml.Serialization.XmlSerializer(p.GetType());
        x.Serialize(Console.Out, p);
        Console.WriteLine();
        Console.ReadLine();
    }
}

Verificação

Para verificar se o projeto funciona, pressione CTRL+F5 para executar o projeto. Um clsPerson objeto é criado e preenchido com os valores inseridos. Esse estado é serializado para XML. A janela do console mostra o seguinte código:

<?xml version="1.0" encoding="IBM437"?>
<clsPerson xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <FirstName>Jeff</FirstName>
    <MI>A</MI>
    <LastName>Price</LastName>
</clsPerson>

Solução de problemas

O Xml.Serialization.XmlSerializer objeto executa apenas serialização superficial. Se você também quiser serializar as variáveis privadas de um objeto ou objetos filho, você deve usar serialização profunda.