<?xml version="1.0" encoding="UTF-8"?>
<rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:wfw="http://wellformedweb.org/CommentAPI/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
	>

<channel>
	<title>Debugando.com &#187; XML</title>
	<atom:link href="http://www.debugando.com/tag/xml/feed/" rel="self" type="application/rss+xml" />
	<link>http://www.debugando.com</link>
	<description>Noticias, dicas e tutorias do mundo da Tecnologia.</description>
	<lastBuildDate>Thu, 01 Dec 2011 23:44:46 +0000</lastBuildDate>
	<generator>http://wordpress.org/?v=2.9.2</generator>
	<language>en</language>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<xhtml:meta xmlns:xhtml="http://www.w3.org/1999/xhtml" name="robots" content="noindex" />
		<item>
		<title>ASP .NET &#8211; Filtrando e exibindo dados XML com LINQ</title>
		<link>http://www.debugando.com/asp-net-filtrando-e-exibindo-dados-xml-com-linq/</link>
		<comments>http://www.debugando.com/asp-net-filtrando-e-exibindo-dados-xml-com-linq/#comments</comments>
		<pubDate>Thu, 07 May 2009 16:52:10 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[.Net]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[ASP .NET]]></category>
		<category><![CDATA[LINQ]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=591</guid>
		<description><![CDATA[


O LINQ to XML é um provedor de dados LINQ que é implementado no namespace System.Xml.LINQ a partir da versão 3.5 da plataforma .NET. Ele fornece um modelo de programação que permite ler, construir e escrever dados XML.
Você pode usar LINQ To XML para realizar consultas  LINQ sobre dados no formato XML que podem [...]]]></description>
			<content:encoded><![CDATA[<p>O LINQ to XML é um provedor de dados LINQ que é implementado no namespace System.Xml.LINQ a partir da versão 3.5 da plataforma .NET. Ele fornece um modelo de programação que permite ler, construir e escrever dados XML.</p>
<p>Você pode usar LINQ To XML para realizar consultas  LINQ sobre dados no formato XML que podem ser retornados do arquivo de sistemas, de uma URL HTTP remota, de um web service ou partir de qualquer XML em memória existente.</p>
<p>O objetivo será acessar uma fonte de dados XML exibindo o seu conteúdo em uma página ASP .NET e filtrar informações com base em um critério usando LINQ to XML.</p>
<p>Abaixo temos a tela de apresentação inicial da  aplicação e ao lado o filtro aplicado usando como critério a cidade selecionada  no controle dropdownlist.</p>
<p><img src="http://conteudo.imasters.uol.com.br/12697/asplqfx1.gif" alt="" /><img src="http://conteudo.imasters.uol.com.br/12697/asplqfx2.gif" alt="" /></p>
<p>Eu vou usar o Visual Web Developer 2008 Express Edition (VWD 2008) no exemplo deste artigo.</p>
<p>Vamos abrir o VWD 2008 e no menu File selecionar New Web Site selecionando o template ASP .NET Web Site, a linguagem C# , informar o nome LINQ_xml e clicar no botão OK;</p>
<p>Com o web site criado, vamos definir uma fonte de dados XML no projeto. Primeiro, devemos criar a pasta App_Data clicando com o botão direito do mouse sobre o nome do projeto e selecionando add ASP .NET Folder -&gt; App_Data;</p>
<p>A seguir, clique com o botão direito sobre a pasta App_Data e selecione Add New Item;</p>
<p>A seguir, selecione o template XML File, informe o nome Clientes.xml e clique no botão Add;</p>
<p><img src="http://conteudo.imasters.uol.com.br/12697/asplqfx3.gif" alt="" /></p>
<p>A seguir, no editor XML que será aberto, defina a estrutura do arquivo XML conforme abaixo:</p>
<div class="codigo">
<pre><em><code><span class="pun">&lt;?</span><span class="pln">xml version</span><span class="pun">=</span><span class="str">"1.0"</span><span class="pln"> encoding</span><span class="pun">=</span><span class="str">"utf-8"</span><span class="pln"> </span><span class="pun">?&gt;</span><span class="pln">

</span><span class="pun">&lt;</span><span class="tag">Clientes</span><span class="pun">&gt;</span><span class="pln">

 </span><span class="pun">&lt;</span><span class="tag">Cliente</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Nome</span><span class="pun">&gt;</span><span class="pln">Macoratti</span><span class="pun">&lt;/</span><span class="tag">Nome</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Cidade</span><span class="pun">&gt;</span><span class="pln">Brasilia</span><span class="pun">&lt;/</span><span class="tag">Cidade</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Idade</span><span class="pun">&gt;</span><span class="pln">37</span><span class="pun">&lt;/</span><span class="tag">Idade</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="pun">&lt;/</span><span class="tag">Cliente</span><span class="pun">&gt;</span><span class="pln">

 </span><span class="pun">&lt;</span><span class="tag">Cliente</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Nome</span><span class="pun">&gt;</span><span class="pln">Jessica</span><span class="pun">&lt;/</span><span class="tag">Nome</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Cidade</span><span class="pun">&gt;</span><span class="pln">Santos</span><span class="pun">&lt;/</span><span class="tag">Cidade</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Idade</span><span class="pun">&gt;</span><span class="pln">19</span><span class="pun">&lt;/</span><span class="tag">Idade</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="pun">&lt;/</span><span class="tag">Cliente</span><span class="pun">&gt;</span><span class="pln">

 </span><span class="pun">&lt;</span><span class="tag">Cliente</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Nome</span><span class="pun">&gt;</span><span class="pln">Jefferson</span><span class="pun">&lt;/</span><span class="tag">Nome</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Cidade</span><span class="pun">&gt;</span><span class="pln">Marilia</span><span class="pun">&lt;/</span><span class="tag">Cidade</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Idade</span><span class="pun">&gt;</span><span class="pln">17</span><span class="pun">&lt;/</span><span class="tag">Idade</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="pun">&lt;/</span><span class="tag">Cliente</span><span class="pun">&gt;</span><span class="pln">

 </span><span class="pun">&lt;</span><span class="tag">Cliente</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Nome</span><span class="pun">&gt;</span><span class="pln">Janice</span><span class="pun">&lt;/</span><span class="tag">Nome</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Cidade</span><span class="pun">&gt;</span><span class="pln">Campinas</span><span class="pun">&lt;/</span><span class="tag">Cidade</span><span class="pun">&gt;</span><span class="pln">
    </span><span class="pun">&lt;</span><span class="tag">Idade</span><span class="pun">&gt;</span><span class="pln">13</span><span class="pun">&lt;/</span><span class="tag">Idade</span><span class="pun">&gt;</span><span class="pln">
 </span><span class="pun">&lt;/</span><span class="tag">Cliente</span><span class="pun">&gt;</span><span class="pln">

</span><span class="pun">&lt;/</span><span class="tag">Clientes</span><span class="pun">&gt;</span></code></em></pre>
</div>
<p>Agora, vamos criar a interface com o usuário usando o formulário Default.aspx.</p>
<p>Selecione a página Default.aspx e, no modo de Design a partir do menu Table -&gt; Insert Table, inclua uma tabela com quatro linhas e duas colunas e inclua os seguintes componentes :</p>
<ul>
<li>Button : ID =butGetXML</li>
<li>Button : ID = butFiltraXML</li>
<li>DropDownList : ID = ddlCidade</li>
<li>Literal : ID = litXMLDados</li>
</ul>
<p>O leiaute do formulário web pode ser visto abaixo:</p>
<p><img src="http://conteudo.imasters.uol.com.br/12697/asplqfx4.gif" alt="" /></p>
<p>Vamos definir o código no arquivo Default.aspx.cs (code-behind).</p>
<p>A primeira coisa a fazer é declarar os namespaces para acessar os recursos do XML e do LINQ:</p>
<p><em>using System.Xml.Linq;<br />
using System.Xml;</em></p>
<p>No evento Load da página vamos verificar  se ocorre um postback e chamar a rotina carregaDLL para preencher  o controle dropdownlist;</p>
<div class="codigo">
<pre><em><code><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> Page_Load</span><span class="pun">(</span><span class="kwd">object</span><span class="pln"> sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(!</span><span class="typ">IsPostBack</span><span class="pun">)</span><span class="pln">
            carregaDLL</span><span class="pun">();</span><span class="pln">
    </span><span class="pun">}</span></code></em></pre>
</div>
<p>O código da rotina carregaDLL() é dado a  seguir. Estamos instanciando um XmlDocument e usando o seu método Load  para carregar o arquivo XML;</p>
<div class="codigo">
<pre><em><code><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> carregaDLL</span><span class="pun">()</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
        </span><span class="typ">XmlDocument</span><span class="pln"> doc </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">new</span><span class="pln"> </span><span class="typ">XmlDocument</span><span class="pun">();</span><span class="pln">
        doc</span><span class="pun">.</span><span class="typ">Load</span><span class="pun">(</span><span class="typ">Server</span><span class="pun">.</span><span class="typ">MapPath</span><span class="pun">(</span><span class="str">"App_Data/Clientes.xml"</span><span class="pun">));</span><span class="pln">
        </span><span class="typ">XmlNodeList</span><span class="pln"> nodeList </span><span class="pun">=</span><span class="pln"> doc</span><span class="pun">.</span><span class="typ">SelectNodes</span><span class="pun">(</span><span class="str">"Clientes/Cliente"</span><span class="pun">);</span><span class="pln">

        </span><span class="kwd">foreach</span><span class="pln"> </span><span class="pun">(</span><span class="typ">XmlNode</span><span class="pln"> node </span><span class="kwd">in</span><span class="pln"> nodeList</span><span class="pun">)</span><span class="pln">
            ddlCidade</span><span class="pun">.</span><span class="typ">Items</span><span class="pun">.</span><span class="typ">Add</span><span class="pun">(</span><span class="kwd">new</span><span class="pln"> </span><span class="typ">ListItem</span><span class="pun">(</span><span class="pln">node</span><span class="pun">.</span><span class="typ">SelectSingleNode</span><span class="pun">(</span><span class="str">"Cidade"</span><span class="pun">).</span><span class="typ">InnerText</span><span class="pun">));</span><span class="pln">
    </span><span class="pun">}</span></code></em></pre>
</div>
<p>Agora no evento Click do botão Filtrar  XML temos o seguinte código:</p>
<div class="codigo">
<pre><em><code><span class="pln"> </span><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> butFiltraXML_Click</span><span class="pun">(</span><span class="kwd">object</span><span class="pln"> sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
    </span><span class="typ">XDocument</span><span class="pln"> xmlDoc </span><span class="pun">=</span><span class="pln"> </span><span class="typ">XDocument</span><span class="pun">.</span><span class="typ">Load</span><span class="pun">(</span><span class="typ">Server</span><span class="pun">.</span><span class="typ">MapPath</span><span class="pun">(</span><span class="str">"App_Data/Clientes.xml"</span><span class="pun">));</span><span class="pln">

  </span><span class="kwd">var</span><span class="pln"> clientes </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> cliente </span><span class="kwd">in</span><span class="pln"> xmlDoc</span><span class="pun">.</span><span class="typ">Descendants</span><span class="pun">(</span><span class="str">"Cliente"</span><span class="pun">)</span><span class="pln">
                              </span><span class="kwd">where</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Element</span><span class="pun">(</span><span class="str">"Cidade"</span><span class="pun">).</span><span class="typ">Value</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> ddlCidade</span><span class="pun">.</span><span class="typ">SelectedItem</span><span class="pun">.</span><span class="typ">ToString</span><span class="pun">()</span><span class="pln">
                             </span><span class="kwd">select</span><span class="pln"> </span><span class="kwd">new</span><span class="pln">
                             </span><span class="pun">{</span><span class="pln">
                                </span><span class="typ">Nome</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Element</span><span class="pun">(</span><span class="str">"Nome"</span><span class="pun">).</span><span class="typ">Value</span><span class="pun">,</span><span class="pln">
                                </span><span class="typ">Cidade</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Element</span><span class="pun">(</span><span class="str">"Cidade"</span><span class="pun">).</span><span class="typ">Value</span><span class="pun">,</span><span class="pln">
                                </span><span class="typ">Idade</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Element</span><span class="pun">(</span><span class="str">"Idade"</span><span class="pun">).</span><span class="typ">Value</span><span class="pun">,</span><span class="pln">
                             </span><span class="pun">};</span><span class="pln">

        litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
</span><span class="kwd">foreach</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> cliente </span><span class="kwd">in</span><span class="pln"> clientes</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"Nome  : "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Nome</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"&lt;br /&gt;"</span><span class="pun">;</span><span class="pln">
            litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"Cidade: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Cidade</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"&lt;br /&gt;"</span><span class="pun">;</span><span class="pln">
            litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"Idade : "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Idade</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"&lt;br /&gt;&lt;br /&gt;"</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">""</span><span class="pun">)</span><span class="pln">
            litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Nada encontrado."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span></code></em></pre>
</div>
<p>Neste código, estamos usando uma consulta LINQ para filtrar as informações do arquivo Clientes.xml. Observe que estamos usando o item  selecionado do controle DropDownList para filtrar  as informações por cidade selecionada.</p>
<p>A seguir temos o código do evento Click do  botão &#8211; Exibir XML &#8211; que obtém as informações do arquivo xml e as exibe;</p>
<div class="codigo">
<pre><em><code><span class="kwd">protected</span><span class="pln"> </span><span class="kwd">void</span><span class="pln"> butGetXML_Click</span><span class="pun">(</span><span class="kwd">object</span><span class="pln"> sender</span><span class="pun">,</span><span class="pln"> </span><span class="typ">EventArgs</span><span class="pln"> e</span><span class="pun">)</span><span class="pln">
    </span><span class="pun">{</span><span class="pln">
  </span><span class="typ">XDocument</span><span class="pln"> xmlDoc </span><span class="pun">=</span><span class="pln"> </span><span class="typ">XDocument</span><span class="pun">.</span><span class="typ">Load</span><span class="pun">(</span><span class="typ">Server</span><span class="pun">.</span><span class="typ">MapPath</span><span class="pun">(</span><span class="str">"App_Data/Clientes.xml"</span><span class="pun">));</span><span class="pln">

    </span><span class="kwd">var</span><span class="pln"> clientes </span><span class="pun">=</span><span class="pln"> </span><span class="kwd">from</span><span class="pln"> cliente </span><span class="kwd">in</span><span class="pln"> xmlDoc</span><span class="pun">.</span><span class="typ">Descendants</span><span class="pun">(</span><span class="str">"Cliente"</span><span class="pun">)</span><span class="pln">
                             </span><span class="kwd">select</span><span class="pln"> </span><span class="kwd">new</span><span class="pln">
                             </span><span class="pun">{</span><span class="pln">
                                   </span><span class="typ">Nome</span><span class="pln"> </span><span class="pun">=</span><span class="pln">  cliente</span><span class="pun">.</span><span class="typ">Element</span><span class="pun">(</span><span class="str">"Nome"</span><span class="pun">).</span><span class="typ">Value</span><span class="pun">,</span><span class="pln">
                                   </span><span class="typ">Cidade</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Element</span><span class="pun">(</span><span class="str">"Cidade"</span><span class="pun">).</span><span class="typ">Value</span><span class="pun">,</span><span class="pln">
                                   </span><span class="typ">Idade</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Element</span><span class="pun">(</span><span class="str">"Idade"</span><span class="pun">).</span><span class="typ">Value</span><span class="pun">,</span><span class="pln">
                             </span><span class="pun">};</span><span class="pln">

        litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">""</span><span class="pun">;</span><span class="pln">
  </span><span class="kwd">foreach</span><span class="pln"> </span><span class="pun">(</span><span class="kwd">var</span><span class="pln"> cliente </span><span class="kwd">in</span><span class="pln"> clientes</span><span class="pun">)</span><span class="pln">
        </span><span class="pun">{</span><span class="pln">
            litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"Nome  : "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Nome</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"&lt;br /&gt;"</span><span class="pun">;</span><span class="pln">
            litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"Cidade: "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Cidade</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"&lt;br /&gt;"</span><span class="pun">;</span><span class="pln">
            litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"Idade : "</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> cliente</span><span class="pun">.</span><span class="typ">Idade</span><span class="pln"> </span><span class="pun">+</span><span class="pln"> </span><span class="str">"&lt;br /&gt;&lt;br /&gt;"</span><span class="pun">;</span><span class="pln">
        </span><span class="pun">}</span><span class="pln">

        </span><span class="kwd">if</span><span class="pln"> </span><span class="pun">(</span><span class="pln">litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">==</span><span class="pln"> </span><span class="str">""</span><span class="pun">)</span><span class="pln">
            litXMLDados</span><span class="pun">.</span><span class="typ">Text</span><span class="pln"> </span><span class="pun">=</span><span class="pln"> </span><span class="str">"Nada encontrado."</span><span class="pun">;</span><span class="pln">
    </span><span class="pun">}</span></code></em></pre>
</div>
<p>Aqui, novamente, usamos uma consulta LINQ para  selecionar informações do arquivo Clientes.xml.</p>
<p>Note que o código é bem simples, principalmente  usando os recursos do LINQ to XML.</p>
<p>Pegue o projeto completo aqui: <a class="ext" href="http://www.macoratti.net/09/04/LINQ_xml.zip">LINQ_xml.zip</a></p>
<p><img src="http://www.pplware.com/wp-content/images/ico_04.jpg" alt="" width="32" height="35" />Fonte: <a href="http://imasters.uol.com.br/artigo/12697/aspnet/asp_net_-_filtrando_e_exibindo_dados_xml_com_linq/" target="_blank">Imasters</a></p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/asp-net-filtrando-e-exibindo-dados-xml-com-linq/feed/</wfw:commentRss>
		<slash:comments>0</slash:comments>
		</item>
		<item>
		<title>Cadastrar, Listar, Editar e Excluir dados de um XML com ASP</title>
		<link>http://www.debugando.com/cadastrar-listar-editar-e-excluir-dados-de-um-xml-com-asp/</link>
		<comments>http://www.debugando.com/cadastrar-listar-editar-e-excluir-dados-de-um-xml-com-asp/#comments</comments>
		<pubDate>Thu, 18 Dec 2008 17:57:15 +0000</pubDate>
		<dc:creator>admin</dc:creator>
				<category><![CDATA[ASP]]></category>
		<category><![CDATA[Programação]]></category>
		<category><![CDATA[XML]]></category>

		<guid isPermaLink="false">http://www.debugando.com/?p=274</guid>
		<description><![CDATA[Cadastrando
Primeiro temos que ter o XML pronto, como um Banco de Dados com suas &#8220;Colunas&#8221; já estruturadas. Adicionei três tags a ele e uma principal, as tags são nome, email e telefone, junto com a tag usuario, que fecha o registro e junto com a tag cadastro que chega o &#8220;pacote&#8221;. Então vamos lá:
Banco.xml
&#60;?xml version=&#8221;1.0&#8243; [...]]]></description>
			<content:encoded><![CDATA[<p><strong>Cadastrando</strong></p>
<p>Primeiro temos que ter o XML pronto, como um Banco de Dados com suas &#8220;Colunas&#8221; já estruturadas. Adicionei três tags a ele e uma principal, as tags são <span class="c2"><span style="color: #006699;">nome</span></span>, <span class="c2"><span style="color: #006699;">email </span></span>e <span class="c2"><span style="color: #006699;">telefone</span></span>, junto com a tag <span class="c2"><span style="color: #006699;">usuario</span></span>, que fecha o registro e junto com a tag <span class="c2"><span style="color: #006699;">cadastro </span></span>que chega o &#8220;pacote&#8221;. Então vamos lá:</p>
<p><strong>Banco.xml</strong></p>
<p><em>&lt;?xml version=&#8221;1.0&#8243; encoding=&#8221;UTF-8&#8243;?&gt;<br />
&lt;cadastro&gt;<br />
&lt;usuario&gt;<br />
&lt;nome&gt;teste nome&lt;/nome&gt;<br />
&lt;email&gt;teste email&lt;/email&gt;<br />
&lt;telefone&gt;teste telefone&lt;/telefone&gt;<br />
&lt;/usuario&gt;<br />
&lt;/cadastro&gt;</em></p>
<p>Deixei a estrutura fixa, já com as tags <span class="c2"><span style="color: #006699;">nome</span></span>, <span class="c2"><span style="color: #006699;">email </span></span>e <span class="c2"><span style="color: #006699;">telefone</span></span>, já preenchidas para só seguirem a base, saber do que cada elemento é composto.</p>
<p>XML criado então é só criar uma página chamada <strong>Cadastro.asp</strong>, dentro dela criar um formulário com os campos de Nome, E-Mail e Telefone e um botão para salvar, tudo em tags HTML mesmo.</p>
<p>Na mesma página fiz uma otimização, coloquei o código de cadastramento em ASP dentro da mesma página e ativei o <span class="c2"><span style="color: #006699;">script</span></span> através do click do botão &#8220;Enviar&#8221;, finalizando fica assim:</p>
<p><strong>Cadastro.asp</strong></p>
<p><em>&lt;%@ Language=”VBScript” %&gt;<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;a href=”Cadastro.asp”&gt;CADASTRAR&lt;/a&gt; &#8211; &lt;a href=”Listar.asp”&gt;LISTAR&lt;/a&gt;<br />
&lt;br&gt;&lt;br&gt;<br />
&lt;form action=”Cadastro.asp” method=”post”&gt;<br />
&lt;b&gt;Nome: &lt;/b&gt;&lt;input type=”text” name=”Nome”&gt;&lt;br&gt;<br />
&lt;b&gt;E-Mail: &lt;/b&gt;&lt;input type=”text” name=”EMail”&gt;&lt;br&gt;<br />
&lt;b&gt;Telefone: &lt;/b&gt;&lt;input type=”text” name=”Telefone”&gt;&lt;br&gt;<br />
&lt;input type=”submit” value=”Cadastrar” name=”btCad”&gt;<br />
&lt;/form&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;<br />
&lt;%<br />
‘ Cadastrando dentro do arquivo XML<br />
If Request.Form(”btCad”) = “Cadastrar” Then<br />
Dim Nome, EMail, Telefone, Banco<br />
Nome = Request.Form(”Nome”)<br />
EMail = Request.Form(”EMail”)<br />
Telefone = Request.Form(”Telefone”)<br />
Banco = Server.MapPath(”Banco.xml”)<br />
Set DocMT = Server.CreateObject(”Microsoft.XMLDOM”) ‘ Criando Objeto<br />
DocMT.Load(Banco)<br />
Set RaizXML = DocMT.documentElement<br />
Set CriarReg = DocMT.createElement(”usuario”)<br />
RaizXML.appendChild(CriarReg)<br />
‘ Funcção para criar objetos dentro do XML</em></p>
<p><em>Function AlimentarXML(NomeElemento, NomeVariavel)<br />
Set Campo = DocMT.createElement(”&#8221;&amp;NomeElemento&amp;”&#8221;)<br />
Campo.Text = NomeVariavel<br />
CriarReg.appendChild(Campo) ‘ Linha de criação de Objetos<br />
End Function</em></p>
<p><em>Call AlimentarXML(”nome”, Nome)<br />
Call AlimentarXML(”email”, EMail)<br />
Call AlimentarXML(”telefone”, Telefone)</em></p>
<p><em>DocMT.Save(Banco)<br />
Response.Write(”&lt;script&gt;alert(’Cadastrado com Sucesso!’);location=’Cadastro.asp’&lt;/script&gt;”)<br />
Set DocMT = Nothing<br />
End If<br />
%&gt;</em><br />
Para ficar mais fácil, deixei o código todo comentado, mas algumas linhas serão esclarecidas:</p>
<p>Para inserir dados no XML, usei o Microsoft.XMLDOM para conexão. Em cada inserção adiciono uma tag <span class="c2"><span style="color: #006699;">usuario </span></span>com essa linha abaixo:</p>
<p><em>Set CriarReg = DocMT.createElement(&#8220;usuario&#8221;)</em></p>
<p>Como são três tags para ser alimentadas usei uma função de minha autoria para fazer esse trabalho, a <span class="c2"><span style="color: #006699;">[cor2]AlimentarXML</span></span>[/cor2] e adiciono com a linha <span class="c2"><em><span style="color: #006699;">Call AlimentarXML(&#8220;nome&#8221;, Nome)</span></em></span> e salvo tudo através do <span class="c2"><span style="color: #006699;">DocMT.Save(Banco)</span></span> e pronto, é só testar e ver se o XML está sendo manipulado corretamente:</p>
<p><em>OBS: Quando testei no meu localhost, o arquivo <strong>Cadastro.asp</strong> deu erro de acesso. Teste ele em um servidor web e funcionou, caso isso aconteçam com vocês também.</em></p>
<p>De primeira, vamos organizar o arquivo <strong>Visualizar.xsl</strong>:</p>
<p><strong>Visualizar.xsl</strong></p>
<p><em>&lt;?xml version=&#8221;1.0&#8243;?&gt;<br />
&lt;xsl:stylesheet xmlns:xsl=&#8221;http://www.w3.org/TR/WD-xsl&#8221;&gt;<br />
&lt;xsl:template match=&#8221;/&#8221;&gt;<br />
&lt;center&gt;<br />
&lt;font color=&#8221;#000000&#8243; size=&#8221;2&#8243; face=&#8221;MS Sans Serif&#8221;&gt;Visualizando Dados&lt;/font&gt;<br />
&lt;table width=&#8221;465&#8243; border=&#8221;1&#8243; cellspacing=&#8221;0&#8243; cellpadding=&#8221;0&#8243;&gt;<br />
&lt;tr&gt;<br />
&lt;td width=&#8221;117&#8243; height=&#8221;22&#8243;&gt;&lt;div align=&#8221;center&#8221;&gt;&lt;strong&gt;Nome&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;<br />
&lt;td width=&#8221;125&#8243;&gt;&lt;div align=&#8221;center&#8221;&gt;&lt;strong&gt;E-mail&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;<br />
&lt;td width=&#8221;107&#8243;&gt;&lt;div align=&#8221;center&#8221;&gt;&lt;strong&gt;Telefone&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;<br />
&lt;td width=&#8221;106&#8243;&gt;&lt;div align=&#8221;center&#8221;&gt;&lt;strong&gt;Ações&lt;/strong&gt;&lt;/div&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;xsl:for-each select=&#8221;cadastro/usuario&#8221;&gt;<br />
&lt;tr align=&#8221;center&#8221;&gt;<br />
&lt;td height=&#8221;22&#8243;&gt;&lt;xsl:value-of select=&#8221;nome&#8221;/&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;xsl:value-of select=&#8221;email&#8221;/&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;xsl:value-of select=&#8221;telefone&#8221;/&gt;&lt;/td&gt;<br />
&lt;td&gt;&lt;a&gt;&lt;xsl:attribute name=&#8221;href&#8221;&gt;Editar.asp?nome=&lt;xsl:value-of select=&#8221;nome&#8221;/&gt;&lt;xsl:value-of select=&#8221;link&#8221;/&gt;&lt;/xsl:attribute&gt;Editar&lt;/a&gt;/&lt;a&gt;&lt;xsl:attribute name=&#8221;href&#8221;&gt;Listar.asp?nome=&lt;xsl:value-of select=&#8221;nome&#8221;/&gt;&lt;xsl:value-of select=&#8221;link&#8221;/&gt;&lt;/xsl:attribute&gt;Apagar&lt;/a&gt;&lt;/td&gt;<br />
&lt;/tr&gt;<br />
&lt;/xsl:for-each&gt;<br />
&lt;/table&gt;<br />
&lt;/center&gt;<br />
&lt;/xsl:template&gt;<br />
&lt;/xsl:stylesheet&gt;<br />
</em></p>
<p>Com o <span class="c2"><span style="color: #006699;">stylesheet </span></span>(que não vem ao caso explicar no momento) vamos fazendo a estrutura de visualização de todos os elementos da tag <span class="c2"><span style="color: #006699;">usuario </span></span>através de um <span class="c2"><span style="color: #006699;">for-each</span></span> assim:</p>
<p><em><span class="c2"><span style="color: #006699;">&lt;xsl:for-each select=&#8221;cadastro/usuario&#8221;&gt;</span></span> e fechando com <span class="c2"><span style="color: #006699;">&lt;/xsl:for-each&gt;</span></span></em></p>
<p>Pegamos o valor dos elementos com essa estrutura aqui: &lt;xsl:value-of select=&#8221;nome_da_tag&#8221;/&gt;.</p>
<p>Usamos o atributo &lt;xsl:attribute name=&#8221;href&#8221;&gt; para gerar links, no nosso caso para excluir e editar (que não será mostrado nesse artigo).</p>
<p>Em uma página chamada Listar.asp criamos os objetos para chamar o XML e o XSL e integrá-los com o transformNode:</p>
<div><em>Set XSLDOC = Server.CreateObject(&#8220;Microsoft.XMLDOM&#8221;)<br />
Set XMLDOC = Server.CreateObject(&#8220;Microsoft.XMLDOM&#8221;)</em></div>
<div><em>XMLDOC.Load(Server.MapPath(&#8220;Banco.xml&#8221;))<br />
XSLDOC.Load(Server.MapPath(&#8220;Visualizar.xsl&#8221;))<br />
Response.Write(XMLDOC.transformNode(XSLDOC))</em></div>
<div><em><br />
</em></div>
<div><em> </em></div>
<div><em> </em>Para deletar é simples, criamos um XMLDOC.documentElement para escolher qual nó vamos deletar e chamamos por querystring como tem no &lt;xsl:attribute name=&#8221;href&#8221;&gt; do Visualizar.xsl, que no caso usamos o select=&#8221;nome&#8221;, deletando com o removeChild, segue abaixo o código completo de Listar.asp</div>
<div></div>
<div></div>
<p><strong>Listar.asp</strong></p>
<p><code><em>&lt;%@ Language="VBScript" %&gt;<br />
&lt;html&gt;<br />
&lt;body&gt;<br />
&lt;a href="Cadastro.asp"&gt;CADASTRAR&lt;/a&gt; - &lt;a href="Listar.asp"&gt;LISTAR&lt;/a&gt;<br />
&lt;br&gt;&lt;br&gt;<br />
&lt;%<br />
Set XSLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto<br />
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto</em></code></p>
<p><code><strong>Listando Dados</strong></code></p>
<p><code><em>XMLDOC.Load(Server.MapPath("Banco.xml"))<br />
XSLDOC.Load(Server.MapPath("Visualizar.xsl"))<br />
Response.Write(XMLDOC.transformNode(XSLDOC))</em></code></p>
<p><code><strong>Deletando Dados</strong></code></p>
<div><code><em>If CStr(Request.QueryString("Nome")) &lt;&gt; "" Then<br />
Banco = Server.MapPath("Banco.xml") ' Chamando o Arquivo XML para sofrer alteração<br />
XMLDOC.Load(Banco)</em></code></div>
<div><code><em>Set RaizXML = XMLDOC.documentElement<br />
Set AlterarReg = RaizXML.selectSingleNode("usuario[nome='"&amp;Request.QueryString("nome")&amp;"']")<br />
RaizXML.removeChild(AlterarReg) ' Linha de remoção de Objetos</em></code></div>
<div><code><em>XMLDOC.Save(Banco)<br />
Response.Write("&lt;script&gt;alert('Deletado com Sucesso!');location='Listar.asp'&lt;/script&gt;")<br />
End If</em></code></div>
<div><code><em>Set XSLDOC = Nothing<br />
Set XMLDOC = Nothing<br />
%&gt;<br />
&lt;/body&gt;<br />
&lt;/html&gt;</em></code></div>
<div><code><em> </em></code><code><em> </em></code></div>
<p><code><em><strong>Uma observação:</strong> tentei fazer o mais fácil possível para garantir um bom entendimento na hora da programação. Qualquer alteração no código para facilitar os comandos será bem-vinda, então vamos lá.</em></code></p>
<div><code>Criem um arquivo chamado <strong>Editar.asp</strong> e nele serão lidas todas as tags que contém no arquivo <strong>Banco.xml </strong>, mas com a querystring passada pelo arquivo <strong>Ler.asp</strong> que criamos no artigo anterior. Vamos só alterar uma única tag, um único nó do XML. Lembrando que usei uma tag "nome": mas vocês poderiam criar uma tag "id" e colocar números seqüenciais ou randômicos, a escolha fica a critério.</code></div>
<div><code>Vamos primeiro listar todos os registros.</code></div>
<div></div>
<div></div>
<div><code><em>&lt;%@ Language="VBScript" %&gt;</em></code></div>
<div><code><em>&lt;%</em></code></div>
<div><code><em> Dim Banco : Banco = Server.MapPath("Banco.xml")</em><br />
<em> Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM")</em></code></div>
<div><code><em> Set objLER = Server.CreateObject("Microsoft.XMLDOM")</em></code></div>
<div><code><em> XMLDOC.Load(Banco)</em></code></div>
<div><code><em> Set objLER = XMLDOC.getElementsByTagName("*")</em></code></div>
<p><code><em>%&gt;</em></code></p>
<p>Logo abaixo desse script vamos criar o formulário com um &#8220;<em>for</em>&#8221; fazendo a varredura nas tags para pegar só o valor de tag citado na <em>querystring </em>passada:</p>
<div><em>&lt;html&gt;</em></div>
<div><em>&lt;body&gt;</em></div>
<div><em>&lt;a href=&#8221;Cadastro.asp&#8221;&gt;CADASTRAR&lt;/a&gt; &#8211; &lt;a href=&#8221;Listar.asp&#8221;&gt;LISTAR&lt;/a&gt;</em></div>
<div><em>&lt;br&gt;&lt;br&gt;</em></div>
<div><em>&lt;form action=&#8221;Editar.asp?nome=&lt;%=Request.QueryString(&#8220;nome&#8221;)%&gt;&#8221; method=&#8221;post&#8221;&gt;</em></div>
<div><em> &lt;input type=&#8221;hidden&#8221; name=&#8221;CampoUpdate&#8221; value=&#8221;&lt;%=Request.QueryString(&#8220;nome&#8221;)%&gt;&#8221;&gt;</em></div>
<div><em> &lt;%</em></div>
<div><em> For i = 0 To (objLER.length &#8211; 1)</em></div>
<div><em> If objLER.Item(i).Text = &#8220;&#8221;&amp;Request.QueryString(&#8220;nome&#8221;)&amp;&#8221;" Then</em></div>
<p><em> %&gt;</em></p>
<p><em> &lt;b&gt;Nome: &lt;/b&gt;&lt;input type=&#8221;text&#8221; name=&#8221;Nome&#8221; value=&#8221;&lt;% Response.Write(objLER.Item(i).Text) %&gt;&#8221;&gt;&lt;br&gt;</em></p>
<p><em> &lt;b&gt;E-Mail: &lt;/b&gt;&lt;input type=&#8221;text&#8221; name=&#8221;EMail&#8221; value=&#8221;&lt;% Response.Write(objLER.Item(i+1).Text) %&gt;&#8221;&gt;&lt;br&gt;</em></p>
<p><em> &lt;b&gt;Telefone: &lt;/b&gt;&lt;input type=&#8221;text&#8221; name=&#8221;Telefone&#8221; value=&#8221;&lt;% Response.Write(objLER.Item(i+2).Text) %&gt;&#8221;&gt;&lt;br&gt;</em></p>
<p><em> &lt;%</em></p>
<p><em> End If</em></p>
<p><em> Next</em></p>
<p><em> %&gt;</em></p>
<p><em>&lt;input type=&#8221;submit&#8221; value=&#8221;Editar&#8221; name=&#8221;btEdt&#8221;&gt;</em></p>
<p><em>&lt;/form&gt;</em></p>
<p><em>&lt;/body&gt;</em></p>
<p><em>&lt;/html&gt;</em></p>
<p><em>Reparem a linha onde temos <span class="c1"><span style="color: #cc3300;">If objLER.Item(i).Text = &#8220;&#8221;&amp;Request.QueryString(&#8220;nome&#8221;)&amp;&#8221;" Then, é ela que está &#8220;selecionando&#8221; a tag que quero mostrar.</span></span></em></p>
<p><em></em></p>
<p><strong>E por fim a edição:</strong></p>
<div><em>&lt;%</em></div>
<div><em>If Request.Form(&#8220;btEdt&#8221;) = &#8220;Editar&#8221; Then</em></div>
<div><em> Dim Nome, EMail, Telefone, CampoUpdate, i</em></div>
<div><em> Nome             = Request.Form(&#8220;Nome&#8221;)</em></div>
<div><em> EMail              = Request.Form(&#8220;EMail&#8221;)</em></div>
<div><em> Telefone          = Request.Form(&#8220;Telefone&#8221;)</em></div>
<div><em> CampoUpdate = Request.Form(&#8220;CampoUpdate&#8221;)</em></div>
<div><em> </em><em> Set objLER_upDate = XMLDOC.getElementsByTagName(&#8220;*&#8221;)</em></div>
<p>For i = 0 To (objLER.length &#8211; 1)</p>
<p>If objLER.Item(i).Text = &#8220;&#8221;&amp;CampoUpdate&amp;&#8221;" Then</p>
<p>objLER.Item(i).Text    = Nome</p>
<p>objLER.Item(i+1).Text            = EMail</p>
<p>objLER.Item(i+2).Text            = Telefone</p>
<p>End If</p>
<p>Next</p>
<p>XMLDOC.Save(Banco)</p>
<p>Response.Write(&#8220;&lt;script&gt;alert(&#8216;Editado com Sucesso!&#8217;);location=&#8217;Listar.asp&#8217;&lt;/script&gt;&#8221;)</p>
<p>Set objLER_upDate = Nothing</p>
<p>End If</p>
<p>Set objLER = Nothing</p>
<p>Set XMLDOC = Nothing</p>
<p>%&gt;</p>
<p>Coloquei a <em>querystring </em>passada em um campo <em>hidden</em> e joguei ele dentro de um &#8220;<em>for</em>&#8220;, como fiz no formulário, em seguida troquei os valores pelas variáveis em seqüência, Nome, EMail e Telefone, salvei com o método XMLDOC.Save e passei um alert em JavaScript e pronto!!</p>
<p>Esse tipo de utilização do XML serve para coisas pequenas, por exemplo, um combo de país, cidades de um determinado estado, cores, dentre outros.</p>
]]></content:encoded>
			<wfw:commentRss>http://www.debugando.com/cadastrar-listar-editar-e-excluir-dados-de-um-xml-com-asp/feed/</wfw:commentRss>
		<slash:comments>9</slash:comments>
		</item>
	</channel>
</rss>

