23.7.08

C#: Gerando XML com XmlTextWriter

Aloha!

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 Lista CriaLista()
{
List func = 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
List func = 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!!!

Nenhum comentário: