ASP.NET - Localizando informações em um arquivo XML
Você sabe como localizar informações em um arquivo XML em páginas ASP.NET ? Se ainda não sabe vai aprender e verá como é simples realizar esta tarefa com ASP.NET.
Suponha que você tenha o arquivo classificacao.xml mostrado abaixo. Este arquivo possui os dados os seis primeiros times classificados no campeonato brasileiro de 2004 (até a rodada de 17/10). Abaixo temos uma visão da tabela no formato XLS que exibe a classificação dos times.
<?xml
version="1.0" encoding="utf-8" ?> <Brasileirao> <Time> <nome>Atletico</nome> <classificacao>1</classificacao> <pontos>69</pontos> <jogos>36</jogos> <vitorias>20</vitorias> <empates>9</empates> <derrotas>7</derrotas> </Time> <Time> <nome>Santos</nome> <classificacao>2</classificacao> <pontos>68</pontos> <Jogos>36</Jogos> <vitorias>21</vitorias> <empates>5</empates> <derrotas>10</derrotas> </Time> <Time> <nome>Sao Paulo</nome> <classificacao>3</classificacao> <pontos>62</pontos> <Jogos>36</Jogos> <vitorias>18</vitorias> <empates>8</empates> <derrotas>10</derrotas> </Time> <Time> <nome>Sao Caetano</nome> <classificacao>4</classificacao> <pontos>62</pontos> <Jogos>36</Jogos> <vitorias>18</vitorias> <empates>8</empates> <derrotas>10</derrotas> </Time> <Time> <nome>Juventude</nome> <classificacao>5</classificacao> <pontos>59</pontos> <Jogos>36</Jogos> <vitorias>17</vitorias> <empates>8</empates> <derrotas>11</derrotas> </Time> <Time> <nome>Palmeiras</nome> <classificacao>6</classificacao> <pontos>59</pontos> <Jogos>36</Jogos> <vitorias>16</vitorias> <empates>11</empates> <derrotas>9</derrotas> </Time> </Brasileirao> |
tabela de classificação do campeonato Brasileiro de futebol edição 2004 Nosso objetivo neste artigo é mostrar como podemos localizar informações no arquivo XML. Para isto eu vou
criar uma aplicação ASP.NET usando a linguagem VB.NET que irá exibir uma O usuário deverá selecionar um time da lista e clicar no botão - Localiza Dados . Após isto estaremos realizando uma busca no arquivo XML e exibindo os dados referentes ao :
|
Nosso projeto constará apenas do arquivo procuraXML.aspx cujo código é mostrado abaixo. A parte amarela refere-se ao código de script na linguagem VB>NET e a parte cinza refere-se ao código HTML e aos controles usados no projeto. Iremos usar os seguintes controles:
Vou utilizar o Web Matrix para criar e testar o projeto ASP.NET. O código do arquivo procuraXML.aspx é o seguinte :
<%@
Page Language="vb" %> <%@ import Namespace="System.Data" %> <script runat="server"> Sub Page_Load(Source as Object, E as EventArgs) if not Page.IsPostBack then 'define um objeto dataset Dim ds as DataSet = new DataSet() 'le o arquivo XML ds.ReadXml(Server.MapPath("/data/classificacao.xml")) 'atribui o dataset ao controle dropdownlist vinculando o nome do time ddlTimes.DataSource=ds ddlTimes.DataTextField="nome" ddlTimes.DataBind end if End Sub Sub procuraXML(Source as Object, E as EventArgs) 'cria um objeto dataset Dim dsTimes as DataSet = new DataSet() 'le o arquivo XML dsTimes.ReadXml(Server.MapPath("/data/classificacao.xml")) ' cria um objeto dataview com base no dataset lido do xml Dim dv as DataView = new DataView(dsTimes.Tables(0)) 'ordena o dataview pelo nome do time dv.Sort = "nome" 'busca no dataview pelo item selecionado no dropdownlist Dim rowIndex as integer = dv.Find(ddlTimes.SelectedItem.Text) Dim Time, Classificacao , Pontos as String if (rowIndex = -1) Then Response.Write("Time nao localizado") else 'exibe os dados do time localizado nas labels b1.visible="True" Time = dv(rowIndex)("nome").ToString() lblTime.text = "Time : " + Time + " " Classificacao = dv(rowIndex)("classificacao").ToString() lblClassificacao.text="Classificação : " + classificacao + " " Pontos = dv(rowIndex)("pontos").ToString() lblPontos.text="Pontos : " + Pontos End If End Sub </script> |
<html> <head> <title>Localizando informações em arquivos XML </title> </head> <body> <form id="form1" runat="server"> <p> <img height="32" src="maco10.gif" width="233" border="0" /> <font face="Verdana" size="2"><strong><font size="3"> <font color="#0000a0"> Localizando informações em um arquivo XML</font></font> </strong></font> </p> <p> </p> <p> <hr /> </p> <p align="center"> <font face="Tahoma"><strong>Campeonato Brasileiro - 2004</strong></font> <p align="center"> <asp:DropDownList id="ddlTimes" Runat="server"></asp:DropDownList> <asp:Button id="button1" onclick="procuraXML" Runat="server" Text="Localiza Dados"></asp:Button> </p> <p> <br /> </p> <p align="center"> <asp:placeholder id="b1" Runat="server" Visible="False"> <asp:Label id="lblTime" runat="server"></asp:Label>-- <asp:Label id="lblClassificacao" runat="server"></asp:Label>-- <asp:Label id="lblPontos" runat="server"></asp:Label> <br /> </asp:placeholder> </p> </form> <hr /> <p align="center"> <font face="Verdana" size="2">Quer saber mais sobre ASP.NET ? - <a href="www.macoratti.net">www.macoratti.net</a></font> </p> </body> </html> |
O principal objeto do código acima é o objeto DataView. É ele que eu estou usando para localizar os dados no arquivo XML. Vamos lembrar um pouco das suas características.
A principal finalidade do objeto DataView é efetuar a ligação de dados de uma fonte de dados com a interface do usuário. Ele possibilita alguns recursos como : filtrar , classificar , pesquisar e navegar pelos dados.
Você pode usar o DataView para exibir um subconjunto dos dados de um objeto DataTable. (Podemos ter mais de um DataView ligados ao mesmo DataTable)
O método usado para realizar a busca dos dados é o método Find. Ele procura por uma linha no DataView pelo valor da chave primária definida. Acima a linha de código que faz isto é :
Dim rowIndex as integer = dv.Find(ddlTimes.SelectedItem.Text)
Ao executar o projeto no WebMatrix e selecionando um item da lista suspensa teremos o resultado como exibido na tela abaixo:
Faça o teste on line aqui -> localizando dados em arquivos XML
Simples , rápido e fácil : ASP.NET ...
José Carlos Macoratti