Usando arquivos XML para armazenar dados em .NET

Este artigo tem o intuito de mostrar como utilizar um arquivo xml para armazenar dados. Nele será mostrado como ler um arquivo e utiliza-lo para exibição em um página ASP.NET.

Neste artigo iremos ver de uma forma exemplificada como utilizar um arquivo XML para armazenar dados e utilizar sua página ASP.NET.

Neste exemplo utilizaremos um arquivo XML de cadastros de Noticias. Nosso XML terá a seguinte estrutura:

<xml version="1.0" encoding="utf-8" ?> <noticia> <noticiaItem id="1"> <title>Notícia 1</title> <description>Texto descritivo da Notícia</description> <dataCadastro>09/04/2012</dataCadastro> <dataFinal>14/04/2012</dataFinal> </noticiaItem> <noticiaItem id="2"> <title>Notícia 2</title> <description>Texto descritivo da Notícia</description> <dataCadastro>09/04/2012</dataCadastro> <dataFinal>14/04/2012</dataFinal> </noticiaItem > <noticiaItem id="3"> <title>Notícia 3</title> <description>Texto descritivo da Notícia</description> <dataCadastro>09/04/2012</dataCadastro> <dataFinal>14/04/2012</dataFinal> </noticiaItem> </noticia>
Listagem 1. Código do arquivo XML

Adicione um novo Item do tipo XML e monte o arquivo conforme mostrado acima. Após isso, crie uma nova classe Noticia.cs e utilize o código de exemplo abaixo:

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Xml; using System.Xml.XPath; using System.Data; public class Noticia{ //Propriedaddes public int Id { get; set; } public string Title { get; set; } public string Description { get; set; } public DateTime DataCadastro { get; set; } public DateTime DataFinal { get; set; } public string Arquivo { get; set; } //Construtores public Noticia(){ Arquivo = ""; Title = ""; Description = ""; } public Noticia(int id, string arquivo){ Arquivo = arquivo; } public Noticia(string arquivo){ Arquivo = arquivo; Title = ""; Description = ""; DataCadastro = DateTime.Now; } //Método para carregar uma única noticia public string carregaNoticia(int id){ int idNoticia = id; // abre o arquivo XML XPathDocument xpathDoc = new XPathDocument(Arquivo); // recebe o navigator associado XPathNavigator xpathNav = xpathDoc.CreateNavigator(); // recebe o iterador com os nós que estão de acordo com a expressão XPath XPathNodeIterator xpathNodeIter = xpathNav.Select(string.Format("/noticia/ noticiaItem[@id=0}]/description", idNoticia)); if (!xpathNodeIter.MoveNext()){ return "Não encontrou a notícia !"; } // mostra o conteúdo da tag return xpathNodeIter.Current.Value; } //Método para listar totas todas as noticias. public List<Noticia> carregaNoticias(){ DataSet dtNoticia = new DataSet(); //Carrega DataSet a partir do XML dtNoticia.ReadXml(Arquivo); List<Noticia> listNoticia = new List<Noticia>(); //faz um loop no DataSet para retornar uma lista de Notícias. foreach (DataRow r in dtNoticia.Tables[0].Rows){ Noticia not = new Noticia(); not.Title = r["title"].ToString(); not.Description = r["description"].ToString(); not.DataCadastro = Convert.ToDateTime(r["dataCadastro"].ToString()); not.DataFinal = Convert.ToDateTime(r["dataFinal"].ToString()); listNoticia.Add(not); } return listNoticia; } }
Listagem 2. Classe Notícia

Na página aspx que irá mostrar a listagem adicione um componente literal para mostrarmos as notícias.

<html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div> <fieldset> <legend>Notícias<legend> <asp:Literal ID="ltlListagemNoticia" runat="server" /> </fieldset> </div> </form> </body> </html>
Listagem 3. Adicionando exibição de notícias

No code da página crie o método para listar as Notícias e chame-o no evento PageLoad.

public partial class Default : System.Web.UI.Page{ protected void Page_Load(object sender, EventArgs e){ if (!IsPostBack){ carregaNoticia(); } } protected void carregaNoticia(){ Noticia not = new Noticia(Server.MapPath("~/app_data/noticia.xml")); List <Noticia> listNoticia = not.carregaNoticias(); foreach (Noticia notItem in listNoticia){ ltlListagemNoticia.Text += ""; ltlListagemNoticia.Text += ""; ltlListagemNoticia.Text += notItem.Title; ltlListagemNoticia.Text += ""; ltlListagemNoticia.Text += notItem.Description; ltlListagemNoticia.Text += ""; ltlListagemNoticia.Text += ""; ltlListagemNoticia.Text += ""; } } }
Listagem 4. Criando o método de listagem

Desta forma você estará exibindo uma listagem de suas notícias armazenadas no xml. Espero que tenham gostado e até o próximo artigo.

Confira também

Artigos relacionados