1 – Usaremos o namespace 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.
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(); }
Agora execute a página e verá o resultado.
Bom até a próxima!