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>
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;
}
}
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>
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 += "";
}
}
}
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
-
Artigo
-
Artigo
-
Artigo
-
Artigo
-
Artigo