Usando arquivos XML para armazenar dados em .NET

Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Para efetuar o download você precisa estar logado. Clique aqui para efetuar o login
Confirmar voto
0
 (0)  (0)

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:

Listagem 1: Código do arquivo XML

<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:

Listagem 2: Classe Notícia

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.

Listagem 3: Adicionando exibição de 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.

Listagem 4: Criando o método de listagem

   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 vc estará exibindo uma listagem de suas notícias armazenadas no xml. Espero que tenham gostado e até o próximo artigo.

 
Você precisa estar logado para dar um feedback. Clique aqui para efetuar o login
Receba nossas novidades
Ficou com alguma dúvida?