Desenvolvimento - C#
Gerar Xml Dinâmicamente
Existem casos em que precisamos gerar dinamicamente arquivos xml vindos de uma base de dados, o problema sempre se dá no tipo de dados que a mesma contém.
por Francke PeixotoExistem casos em que precisamos gerar dinamicamente arquivos xml vindos de uma base de dados, o problema sempre se dá no tipo de dados que a mesma contém.
Mediante este problema, decidi escrever este artigo.
Gerar um arquivo xml em .NET é algo tão simples que depois deste artigo possivelmente abriremos nossas mentes para outros tipos de conversão dimâmica usando o Framework .Net.
Então deixamos de papo e vamos por a mão na massa!
Vamos iniciar este artigo.
1 - Antes de qualquer coisa devemos declarar o nomespace using System.Xml;
Após isso escreveremos a classe abaixo:
public class ClassXML
{
private XmlDocument xmldoc;
private XmlNode xmlnode;
private string _xmlpath;
public string XmlPath {
get { return _xmlpath; }
set { _xmlpath = value; }
}
public ClassXML(){}
public XmlDocument GerarXML(DataTable tabela)
{
string parametros;
xmldoc = new XmlDocument();
xmlnode = xmldoc.CreateXmlDeclaration("1.0", "UTF-8", null);
xmldoc.AppendChild(xmlnode);
// caso a tabela não possua nenhum nome geramos o nome TABELA
parametros = ((tabela.TableName.ToString() == null) ? "TABELA" : tabela.TableName.ToString().ToUpper());
xmlnode = xmldoc.CreateElement(parametros.ToUpper());
xmldoc.AppendChild(xmlnode);
// Aqui começamos a criar toda estrutura do xml.
foreach (DataRow linha in tabela.Rows)
{
xmlnode = xmldoc.CreateElement(parametros + "_linha");
for (int i = 0; i < linha.Table.Columns.Count; i++)
{
XmlNode xmlnode_parente = xmldoc.CreateElement(linha.Table.Columns[i].ColumnName.ToString().ToUpper(),
linha.Table.Columns[i].ColumnName.ToString().ToUpper(),
null);
xmlnode_parente.InnerText = linha[i].ToString();
xmlnode.AppendChild(xmlnode_parente);
xmldoc.SelectSingleNode("/" + parametros.ToUpper() + "").AppendChild(xmlnode);
}
}
LimparDocumento();
return xmldoc;
}
}
2 – Agora com nossa classe devidamente criada, iremos criar um WebForm.aspx e em seu Page_Load iremos criar um DataTable.
Vamos aproveitar este artigo para mostrar como criar e carregar um DataTable manualmente, lembrando que você poderá carregar um DataTable através de uma conexão ao seu bando de dados ou arquivo texto e etc.
Inicaremos agora nosso trablaho dentro do arquivoWebForm.aspx , mas precisamente dentro de seu Page_Load (WebForm.aspx.cs).
protected void Page_Load(object sender, EventArgs e)
{
// Random para criar valores pseudo-aleatórios.
Random rnd = new Random();
// Instânciando nossa Tabela.
DataTable tb = new DataTable("TB");
// Criando a Coluna * você poderá criar quantas quiser.
tb.Columns.Add("Idade");
for (int i = 0; i < 10; i++)
{
// Aqui estamos adicionando novas linhas ao nosso DataTable.
int idade = rnd.Next(18, 50);
DataRow linha = tb.NewRow();
linha["IDADE"] = idade.ToString();
tb.Rows.Add(linha);
}
// instânciando nosso obj xml.
ClassXML clsxml = new ClassXML();
// Limpando o documento e informando ao navegador que ele é do tipo XML.
Response.Clear();
Response.ClearContent();
Response.ClearHeaders();
Response.ContentType = "text/xml";
// Gerar o XML com o conteudo de nossa tabela.
Response.Write(x.GerarXML(tb).OuterXml);
Response.End();
}
Ao acessar está página em um browse o resultado será o o mostrado abaixo: