Como Salvar um classe em XML

Se você necessita criar um xml a partir de uma classe, e depois é necessário que ao carregar esse arquivo você conseguir recriar a classe, isso é bem simples apenas é necessário seguir esses passos.

Primeiro você precisa definir a classe que você quer que crie o XML como Serializable colocando o atributo em cima( [Serializable] ), após isso é necessário criar um construtor sem parâmetros, ele pode ser protected apenas não pode ser private, segue um exemplo de uma classe criada para gerar um XML:

[Serializable] // atributo que define que a classe é serializavel
 public class Pessoa
 {
 private string _nome;
 private string _nomeMae;
 private int _idade;

//Obrigatório ter esse construtor.
 protected Pessoa()
 {

 }

public Pessoa(string nome, string nomeMae, int idade)
 {
 _nome = nome;
 _nomeMae = nomeMae;
 _idade = idade;
 }

public string Nome
 {
 get { return _nome; }
 set { _nome = value; }
 }

public string NomeMae
 {
 get { return _nomeMae; }
 set { _nomeMae = value; }
 }

public int Idade
 {
 get { return _idade; }
 set { _idade = value; }
 }

public override string ToString()
 {
 return string.Format("Nome: {0} Minha mãe é:{1} e eu tenho {2}anos", Nome, NomeMae, Idade);
 }
 }

Após isso vamos a um exemplo de como salvar essa classe em um arquivo Físico em xml e depois carregado(Você também pode gerar apenas o Texto em xml utilizando a mesma estrutura, mas ao invés de Stream utilize TextWriter):

static void Main(string[] args)
 {

using (Stream fileStream = new FileStream(@"C:\pessoa.xml", FileMode.OpenOrCreate))
 {
 Pessoa pessoalParaCriarArquivo = new Pessoa("Meu Nome", "Nome da Minha Mae", 20);
 XmlSerializer xmlSerializer = new XmlSerializer(pessoalParaCriarArquivo.GetType());
 xmlSerializer.Serialize(fileStream, pessoalParaCriarArquivo);
 Console.Write("Pessoa Para Salvar Arquivo:" + Environment.NewLine + pessoalParaCriarArquivo.ToString() + Environment.NewLine);
 }

 using (XmlReader xmlReader = XmlReader.Create(@"C:\pessoa.xml"))
 {
 XmlSerializer xmlSerializer = new XmlSerializer(typeof(Pessoa));
 Pessoa pessoaLidaDoArquivo = (Pessoa) xmlSerializer.Deserialize(xmlReader);
 Console.Write("Pessoa lida do Arquivo:" + Environment.NewLine + pessoaLidaDoArquivo.ToString());
 }

Console.ReadKey();

}

Esse código irá gerar um arquivo xml no c:\ da sua máquina com a estrutura da classe, e após irá ler esse mesmo arquivo e criar um objeto igual ao que foi gerado o arquivo, essa transformação para xml é muito útil para transferência de informações entre Webservices ou até mesmo de uma aplicação para outra.

O arquivo seguindo esse exemplo passado irá ficar assim:

<?xml version="1.0"?>
<Pessoa xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Nome>Meu Nome</Nome>
<NomeMae>Nome da Minha Mae</NomeMae>
<Idade>20</Idade>
</Pessoa>