Gostaria de compartilhar com vocês uma forma simples de gerar um xml no c#. Estarei utilizando o XmlTextWriter, que nos dá uma certa liberdade na criação do documento xml sem seguir modelos de forma rápida e fácil.
Vamos fazer um exemplo simples: Criar um tipo, "alimentar" uma lista e depois gerar o xml através desta lista. Coisa idiota, você deve estar pensando. Mas é um exemplo que pode abrir a sua mente para aplicações específicas. Você um dia pode precisar, não desdenhe. rs
Primeiro vamos criar o tipo Funcionarios:
public class Funcionarios
{
public string nome;
public string cargo;
public string email;
}
Agora o nosso método para gerar a lista:
public static ListaCriaLista()
{
Listfunc = new List
{
new teste{nome="João",cargo="Analista",email="joao@oi.com.br",status="on"},
new teste{nome="Pablo",cargo="Redator",email="pablo@ig.com.br",status="off"}
};
return func;
}
Até agora tudo tranquilo, né? Uma classe simples e uma lista básica. Agora no Page_Load, vamos incluir o código abaixo, onde estaremos gerando nosso xml:
/// Carregando nossa lista
Listfunc = CriaLista();
/// Definindo o tipo do documento como xml
Response.ContentType = "text/xml";
/// Instanciando nosso XmlTextWriter
XmlTextWriter xtw = new XmlTextWriter(Response.Output);
/// Iniciando o documento
xtw.WriteStartDocument();
try
{
/// Escrevendo nosso "root"
xtw.WriteStartElement("Qx3Funcionarios");
foreach (Funcionarios x in func)
{
/// Iniciando o elemento funcionário
xtw.WriteStartElement("funcionario");
xtw.WriteAttributeString("status", x.status);
xtw.WriteElementString("nome", x.nome);
xtw.WriteElementString("cargo", x.cargo);
xtw.WriteElementString("email", x.email);
/// Finalizando o elemento funcionário
xtw.WriteEndElement();
}
/// Finalizando o root
xtw.WriteEndElement();
}
catch (Exception ex)
{
xtw.WriteElementString("Error", ex.Message);
}
/// Finalizando o documento e liberando a instância do XmlTextWriter
xtw.WriteEndDocument();
xtw.Close();
Response.End();
Bom, espero que seja útil como foi para mim. Tem muito exemplo na net explicando como gerar o xml dinamicamente. Mas dessa forma foi a mais simples que encontrei.
Abraços!!!