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>