Anda di halaman 1dari 6

Tutorial completo - Usar XML como banco de dados (ASP.NET / C#) -...

http://cbsa.com.br/post/tutorial-completo---usar-xml-como-banco-de-d...

02/05/2012 | 07h14min por Cesar Cassiano Schimanco

Avaliao 5,0/5 - 6 votos.

J avaliou este artigo? Home Contato Sugestes e ideias Like 24

Send Ferramentas 1

Tweetar

Encontre no cbsa.com.br

Artigos populares
1. Calcular distncia entre dois endereos
Google Maps API

2. Ler arquivo XML usando XmlTextReader


e XmlDocument em C# - ASP.NET

3. 3 formas de criar e salvar arquivo XML


(C# / XmlTextWriter)

Artigos populares
1. Calcular distncia entre dois endereos Google Maps API 2. Ler arquivo XML usando XmlTextReader e XmlDocument em C# - ASP.NET 3. 3 formas de criar e salvar arquivo XML (C# / XmlTextWriter) 4. Listar arquivos, fazer upload e download de FTP em C# - ASP.NET 5. Web service - Retornar JSON com ASP.NET/C# 6. Usar globalization no Web.Config e CultureInfo para formatar data e moeda em vrios idiomas no ASP.NET / C# 7. Diferenas entre ExecuteReader, ExecuteNonQuery, ExecuteScalar. Quando usar e qual usar?

Tutorial completo - Usar XML como banco de dados (ASP.NET / C#)


Este artigo segue na linha do Ler arquivo XML usando XmlTextReader e XmlDocument, s que em um formato mais parecido com tutorial. Vou mostrar um exemplo simples de como cadastrar, editar e excluir clientes usando XML como banco de dados. Vou criar uma pgina para cada ao, para ficar fcil para os iniciantes entenderem como vamos manipular o arquivo XML, adicionar, editar, apagar e listar os dados. Nosso XML vai ter esta extrutura inicialmente (Clientes.xml):
<?xml version="1.0" encoding="utf-8" ?> <clientes />

Codebreak recomenda:

codebreak

Nota: Crie o XML no diretorio App_Data do seu projeto. Caso o App_Data no exista, v no Solution Explorer e clique com o boto direito no website, selecione Add ASP.NET Folder, e depois App_Data.

Curtir 475 pessoas curtiram codebreak.

Plug-in social do Facebook

Parceiros

Vamos criar uma pgina (default.aspx) para listar os clientes.


Um repeater ser usado para fazer a listagem que conter, nome, email, um link para excluir e outro link para editar os dados do cliente. Na Default.aspx coloquei tambm um link para a pgina que vai criar um novo cliente. No vou falar muito do cdigo pois ele est comentado e explica praticamente cada linha, ento vamos ver como ficou esta parte. Default.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Default.aspx.cs" Inherits="_Default" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"

1 de 6

19/09/2013 01:04

Tutorial completo - Usar XML como banco de dados (ASP.NET / C#) -...

http://cbsa.com.br/post/tutorial-completo---usar-xml-como-banco-de-d...

02/05/2012 | 07h14min

J avaliou este artigo?

Avaliao 5,0/5 - 6 votos. por Cesar Cassiano Schimanco Artigos populares <form id="form1" runat="server">

<div> novo cliente</a> 1. Calcular distncia entre dois endereos Adicionar

Google Maps API

2. Ler arquivo XML usando XmlTextReader


<tr> e XmlDocument em C# - ASP.NET <td><strong>Nome</strong></td> <td><strong>E-mail</strong></td> 3. 3 formas de criar e salvar arquivo XML <td>&nbsp;</td> (C# / XmlTextWriter) <td>&nbsp;</td> </tr> 4. Listar arquivos, <!--/Header fazer uploadda e download tabela-->

5. Web service - Retornar JSON com <ItemTemplate>


ASP.NET/C#

de FTP em C# - ASP.NET <!-- Incio do repeater dos clientes--> <asp:Repeater ID="repClenetes" runat="server">
<tr> <td><%# Eval("nome") %></td> <td><%# Eval("email") %></td> <!-- Link para a pgina que vai editar este cliente--> <td><a href="editar.aspx?id=<%# Eval("id") %>">Editar</a></td> <!-- Link para a pgina que vai excluir este cliente--> <td><a href="excluir.aspx?id=<%# Eval("id") %>">Excluir</a></td> </tr> </ItemTemplate> </asp:Repeater> <!-- Fim do repeater dos clientes-->

<!-- tr que ser exibida caso no existam clientes--> <tr runat="server" id="noRows" visible="false"> <td colspan="4">Nenhum item encontrado</td> </tr> </table> </div> </form> </body> </html>

Default.aspx.cs
using using using using using using using System; System.Collections.Generic; System.Linq; System.Web; System.Web.UI; System.Web.UI.WebControls; System.Data;

public partial class _Default : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Caminho do arquivo XML string sXMLFile = Server.MapPath("~/app_data/clientes.xml"); //Criar o DataSet DataSet ds = new DataSet(); //Preenche o DataSet com o XML ds.ReadXml(sXMLFile); /*Verificando se existem dados, caso exista, vai popular o repeater Se no existir dados no DataSet, mostar a tr noRows com a mensagem "Nenhum item encontrado"*/ if (ds.Tables["cliente"] != null) { //DataSet como DataSource do repeater repClenetes.DataSource = ds; repClenetes.DataBind(); } else noRows.Visible = true; } }

Aps executarmos nosso cdigo vamos ver esta tela.

Deve ser estranho ver algum iniciar o desenvolvimento pela listagem de dados sem nem mesmo ter a pgina que adiciona os dados. Pois , algo muito comum ver o desenvolvedor criar a listagem j com vrios dados. O resultado que ele esquece de colocar uma mensagem do tipo "Nenhum item encontrado", pois nunca v a pgina sem dados.

Agora vamos a pgina que vai adionar dados no XML.


Esta pgina bem simples, tem um formulrio com nome, e-mail, telefone e o boto salvar. O code-behind tambm bem simples, ele verifica se existe a extrutura no XML (id,nome,email,telefone), se no tiver ele a cria da linha 31 a 36 e depois salva. Adicionar.aspx
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Adicionar.aspx.cs" Inherits="Cliente" %> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" <html xmlns="http://www.w3.org/1999/xhtml"> <head runat="server"> <title></title> </head> <body> <form id="form1" runat="server"> <div>

2 de 6

19/09/2013 01:04

Tutorial completo - Usar XML como banco de dados (ASP.NET / C#) -...

http://cbsa.com.br/post/tutorial-completo---usar-xml-como-banco-de-d...

02/05/2012 | 07h14min por Cesar Cassiano Schimanco Artigos populares </tr>


<tr>

J avaliou este artigo?


Avaliao 5,0/5 - 6 votos.

1. Calcular distncia entre dois endereos


Google Maps API
="txtEmail" runat="server" />

2. Ler arquivo XML usando XmlTextReader


e XmlDocument em C# - ASP.NET

3. 3 formas de criar e salvar arquivo XML


(C# / XmlTextWriter)

="txtPhone" runat="server" />

4. Listar arquivos, fazer upload e download


de FTP em C# - ASP.NET
"btnSave" runat="server" Text="Salvar" OnClick="btnSave_Click" />

5. Web service - Retornar JSON com


ASP.NET/C# </div> </form> </body> </html>

Adicionar.aspx.cs
using using using using using using using System; System.Collections.Generic; System.Linq; System.Web; System.Web.UI; System.Web.UI.WebControls; System.Data;

public partial class Cliente : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { } #region btnSave_Click protected void btnSave_Click(object sender, EventArgs e) { //Caminho do arquivo XML string sXMLFile = MapPath("~/app_data/clientes.xml"); //Criar o DataSet DataSet ds = new DataSet(); //Preenche o DataSet com o XML ds.ReadXml(sXMLFile); //Verifica se existe extrutura if (ds.Tables.Count == 0) { //Cria a extrutura (colunas) DataTable dt = new DataTable("cliente"); dt.Columns.Add("id"); dt.Columns.Add("nome"); dt.Columns.Add("email"); dt.Columns.Add("telefone"); ds.Tables.Add(dt); } //Cria uma nova linha DataRow dRow = ds.Tables[0].NewRow(); //Seta os valores dRow["id"] = Guid.NewGuid(); //Adiciona um identificador nico com ID dRow["nome"] = txtNome.Text; dRow["email"] = txtEmail.Text; dRow["telefone"] = txtPhone.Text; //Adiciona a linha no DataSet ds.Tables["cliente"].Rows.Add(dRow); //Salva no XML ds.WriteXml(sXMLFile); //Redireciona para a lista de clientes Response.Redirect("default.aspx"); } #endregion }

O formulrio ficou assim:

A listagem ficou assim:

O XML aps adicionar um cliente ficou assim:


<?xml version="1.0" standalone="yes"?> <clientes> <cliente> <id>7eeefc4f-f163-4265-8fc9-8470cfc34d5e</id> <nome>Cesar Cassiano Schimanco</nome> <email>cesar@cbsa.com.br</email> <telefone>00 0000 0000</telefone>

3 de 6

19/09/2013 01:04

Tutorial completo - Usar XML como banco de dados (ASP.NET / C#) -...

http://cbsa.com.br/post/tutorial-completo---usar-xml-como-banco-de-d...

02/05/2012 | 07h14min por Cesar Cassiano Schimanco Artigos populares

J avaliou este artigo?


Avaliao 5,0/5 - 6 votos.

A estrutura desta parte basicamente igual a da pgina Adicionar.aspx, poderia ser o mesmo arquivo inclusive, mas preferi separ-los 1. ficar Calcular entre dois endereos para maisdistncia fcil de entender. A grande diferena que vamos preencher o formulrio com os dados do XML. Para isso vou passar o
Googlepor Maps API ID do cliente QueryString e depois fazer uma busca no DataSet para encontrar o cliente com este ID. O resultado desta busca ser

um DataRow que XML servir para XmlTextReader preencher os campos do formulrio e posteriormente atualizar o XML. Vamos ver como ficou o cdigo. 2. Ler arquivo usando
e XmlDocument em C# - ASP.NET

Editar.aspx 3. 3 formas de criar e salvar arquivo XML


<%(C# / XmlTextWriter) AutoEventWireup="true" CodeFile="Editar.aspx.cs" Inherits="Editar" %>

4.<!Listar arquivos, fazer upload e download XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" "-//W3C//DTD
de FTP em C# - ASP.NET <html "http://www.w3.org/1999/xhtml">

5.<head Web service - Retornar JSON com


</ASP.NET/C# <body> <form id="form1" runat="server"> <div> <table> <tr> <td>Nome</td> <td> <asp:TextBox ID="txtNome" runat="server" /> </td> </tr> <tr> <td>E-mail</td> <td> <asp:TextBox ID="txtEmail" runat="server" /> </td> </tr> <tr> <td>Telefone</td> <td> <asp:TextBox ID="txtPhone" runat="server" /> </td> </tr> <tr> <td colspan="2"> <asp:Button ID="btnSave" runat="server" Text="Salvar" OnClick="btnSave_Click" /> </td> </tr> </table> </div> </form> </body> </html>

Editar.aspx.cs
using using using using using using using System; System.Collections.Generic; System.Linq; System.Web; System.Web.UI; System.Web.UI.WebControls; System.Data;

public partial class Editar : System.Web.UI.Page { DataSet ds; string sXMLFile = HttpContext.Current.Server.MapPath("~/app_data/clientes.xml"); #region Page_Load protected void Page_Load(object sender, EventArgs e) { if (!Page.IsPostBack) { //Pegando o ID do cliente atravs da QueryString id. string strID = Request.QueryString["id"]; //Criando o DataSet ds = new DataSet(); //Preenche o DataSet com o XML ds.ReadXml(sXMLFile); //Fazer uma busca no DataSet para encontrar o cliente com o ID da QueryString DataRow dRow = ds.Tables["cliente"].Select(" id = '" + strID + "'")[0]; //Preenchendo os campos com os valores do DataRow txtNome.Text = Convert.ToString(dRow["nome"]); txtEmail.Text = Convert.ToString(dRow["email"]); txtPhone.Text = Convert.ToString(dRow["telefone"]); } } #endregion #region btnSave_Click protected void btnSave_Click(object sender, EventArgs e) { //Pegando o ID do cliente atravs da QueryString. string strID = Request.QueryString["id"]; //Criando o DataSet ds = new DataSet(); //Preenche o DataSet com o XML ds.ReadXml(sXMLFile); //Fazer uma busca no DataSet para encontrar o cliente com o ID da QueryString DataRow dRow = ds.Tables["cliente"].Select(" id = '" + strID + "'")[0]; //Definindo os valores do DataRow com os valores do formulrio. dRow["nome"] = txtNome.Text; dRow["email"] = txtEmail.Text; dRow["telefone"] = txtPhone.Text; //Atualizar o XML com os novos valores. ds.WriteXml(sXMLFile); Response.Redirect("default.aspx"); } #endregion }

Por fim vamos ao cdigo que vai excluir o cliente do XML.

4 de 6

19/09/2013 01:04

Tutorial completo - Usar XML como banco de dados (ASP.NET / C#) -...

http://cbsa.com.br/post/tutorial-completo---usar-xml-como-banco-de-d...

02/05/2012 | 07h14min

J avaliou este artigo?

Avaliao 5,0/5 - 6 votos. por Cesar Cassiano Schimanco Artigos populares Excluir.aspx.cs que contm cdigo que faz a excluso do item no XML.

1. Calcular distncia entre dois endereos Excluir.aspx


Google Maps API
<% AutoEventWireup="true" CodeFile="Excluir.aspx.cs" Inherits="Excluir" %>

2. Ler arquivo XML usando XmlTextReader

<!e XmlDocument em C# - ASP.NET "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd" "http://www.w3.org/1999/xhtml"> 3.<html 3 formas de criar e salvar arquivo XML <head (C# / XmlTextWriter) </

4.<body Listar arquivos, fazer upload e download


de FTP em C# - ASP.NET
>

5. Web service - Retornar JSON com


ASP.NET/C# </body> </html>

Excluir.aspx.cs
using using using using using using using System; System.Collections.Generic; System.Linq; System.Web; System.Web.UI; System.Web.UI.WebControls; System.Data;

public partial class Excluir : System.Web.UI.Page { protected void Page_Load(object sender, EventArgs e) { //Caminho do arquivo XML string sXMLFile = MapPath("~/app_data/clientes.xml"); //Criar o DataSet DataSet ds = new DataSet(); //Preenche o DataSet com o XML ds.ReadXml(sXMLFile); string strID = Request.QueryString["id"]; if (!string.IsNullOrEmpty(strID)) { //Selecionar e deletar a linha com o ID da QueryString ds.Tables["cliente"].Select(" id = '" + strID + "'")[0].Delete(); //Aplicar as alteraes no DataSet ds.AcceptChanges(); //Salva no XML ds.WriteXml(sXMLFile); //Redireciona para a lista de clientes Response.Redirect("default.aspx"); } } }

Download do cdigo completo do Tutorial - Usando XML como banco de dados (ASP.NET / C#) aqui.

CodeSmith Code Generator


www.codesmithtools.com

Template-driven. Easy to use. Your code. Your way. Faster!

ASP.NET, C#, DataRow, DataSet, DataTable, Repeater, XML

Veja tambm
1. XML para DataSet em ASP.NET / C# 2. DataSet para XML em ASP.NET / C# 3. Pegar ID (Primary Key) do ltimo registro inserido no banco de dados de uma forma simples, usando SCOPE_IDENTITY() e SqlCommand em
ASP.NET / C#

4. Ler arquivo XML usando XmlTextReader e XmlDocument em C# - ASP.NET 5. DataSet com stored procedure (ASP.NET / C#)

5 de 6

19/09/2013 01:04

Tutorial completo - Usar XML como banco de dados (ASP.NET / C#) -...

http://cbsa.com.br/post/tutorial-completo---usar-xml-como-banco-de-d...

02/05/2012 | 07h14min por Cesar Cassiano Schimanco Artigos populares Comentrios

J avaliou este artigo?


Avaliao 5,0/5 - 6 votos.

1. Calcular distncia entre dois endereos


Google Maps API

2. Ler arquivo XML usando XmlTextReader


e XmlDocument em C# - ASP.NET

Gostei muito do artigo. 3. 3 formas de criar e salvar arquivo XML Queria saber como fao para pegar o ID do ultimo item inserido no XML. 4. Listar arquivos, fazer upload e download
de FTP em C# - ASP.NET Obrigado. (C# / XmlTextWriter)

5. Web s service Retornar JSON com 25/10/12 11:53-Usando: ASP.NET/C#

0 Responder

Cesar Cassiano Schimanco disse:


Vej o exemplo, o id esta na linha 4. string sXMLFile = HttpContext.Current.Server.MapPath("~/app_data/clientes.xml"); DataSet ds = new DataSet(); ds.ReadXml(sXMLFile); string id = Convert.ToString(ds.Tables[0].Rows[ds.Tables[0].Rows.Count - 1]["id"]);
29/10/12 s 03:23 Usando: 3 0 Responder

Postar um novo comentrio

Pginas
Home Contato Sugestes e ideias Ferramentas RSS

Categorias
ASP.NET C# SQL Server Javascript AS3 IIS WP7 Classic ASP CSS3 HTML5 Visual Studio VB.NET

Tags
404 acentos actionscript 3 actionscript3 Ajax array DataBinder.Eval

as3

Bando de dados cache CSV

DataSet DataTable Dictionary


JavaScriptSerializer

ellipse e-mail Erro excel Fancybox

flex GEO Location Global.asax Globalization HeaderTemplate HTML5 IIS IIS 7

javascript

jQuery JSON JSONP

Lambda LINQ List MAC

MSSQL MySQL NASP Order by paginao quadrado RANDOM Repeater Sandbox Server.MapPath

SQL

SQL Server

SqlCommand string table UPDATE upload

URL Rewriting validao Visual Studio W3C Web Service WebService Windows Phone 7 WP7 XDocument

web.config

XML

Yahoo

6 de 6

19/09/2013 01:04