Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Bruno Willians

Listar Xml - Busca XML e ASP

Recommended Posts

Pessoal estou com um problemão...

Seguinte..

 

Tenho a estrutura abaixo:

<Resultados prova="103">
    <Atleta idPeito="28">
        <Colocacao>29</Colocacao> 
        <Nome>AILTON SÃO PEDRO</Nome> 
        <Idade>29</Idade> 
        <Sexo>M</Sexo> 
        <TempoBruto>1/1/1900 00:30:59</TempoBruto> 
        <FaixaEtaria>M2529</FaixaEtaria> 
        <ColocacaoFaixa>-</ColocacaoFaixa> 
        <Categoria>E</Categoria> 
        <SubCategoria /> 
        <NaoCorreu /> 
        <Nada /> 
        <TempoLiquido>1/1/1900 00:30:56</TempoLiquido> 
        <Equipe>ATHETIC SPORTS/LUASA</Equipe> 
    </Atleta>
 </Resultados>

Então o problema é que acima este aquivo possui apenas 1 dado, mas o arquivo original possui milhares de atletas... Dúvida!: como posso fazer para listar isso com o xml.

 

Abaixo está o código que uso para buscar por nome completo, mas eu gostaria de buscar por qqr palavra e ele me listasse todos os atletas cujo nome fosso exemplo: bru... bruno, bruna, brunovits etc...

 

set objXML = Server.CreateObject("Microsoft.XMLDOM")
 objXML.async = false

 caminho = server.MapPath("../../arquivos/resultados/letra/"&prova&"/atleta_"&letra&".xml")
 objXML.load(caminho)

 Set objNode = objXML.SelectSingleNode("Resultados/Atleta[Nome='"&TRIM(nome)&"']")

 colocacao 		= objNode.childNodes(0).Text
 Nome 			= objNode.childNodes(1).Text
 idNasc			= objNode.childNodes(2).Text
 sexo 			= objNode.childNodes(3).Text
 TempoBruto 	        = objNode.childNodes(4).Text
 FaixaEtaria 	        = objNode.childNodes(5).Text
 ColocacaoFaixa	        = objNode.childNodes(6).Text
 Categoria 		= objNode.childNodes(7).Text
 SubCategoria 	        = objNode.childNodes(8).Text
 TempoLiquido 	        = objNode.childNodes(11).Text
 Equipe 		= objNode.childNodes(12).Text

 

Essa é a estrutura usada...

me ajudem aí galera..

Se derrepente a estrutura for outra posta ai tb..

 

vlws

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sua dúvida está mais para ASP do que para XML.

 

Tópico movido:

 

Webstandards: CSS / XML / XHTML / HTML http://forum.imasters.com.br/public/style_emoticons/default/seta.gif ASP

 

http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

esta gerando algum erro ???

dá uma pesquidsada no forum k existem varios tópicos ´timos para isso, vai te ajudar

e aki um exemplo, primeiro temos que ter o XML pronto, como um Banco de Dados com suas “Colunas” 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

 

Banco.xml

 

<?xml version=”1.0″ encoding=”UTF-8″?>
<cadastro>
<usuario>
<nome>teste nome</nome>
<email>teste email</email>
<telefone>teste telefone</telefone>
</usuario>
</cadastro>

a estrutura fixa, já com as tags nome, email e telefone, já preenchidas para só seguirem a base, saber do que cada elemento é composto.

 

XML criado então é só criar uma página chamada Cadastro.asp, 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.

 

Na mesma página fiz uma otimização, coloquei o código de cadastramento em ASP dentro da mesma página e ativei o script através do click do botão “Enviar”, finalizando fica assim:

 

Cadastro.asp

<%@ Language=”VBScript” %>
<html>
<body>
<a href=”Cadastro.asp”>CADASTRAR</a> – <a href=”Listar.asp”>LISTAR</a>
<br><br>
<form action=”Cadastro.asp” method=”post”>
<b>Nome: </b><input type=”text” name=”Nome”><br>
<b>E-Mail: </b><input type=”text” name=”EMail”><br>
<b>Telefone: </b><input type=”text” name=”Telefone”><br>
<input type=”submit” value=”Cadastrar” name=”btCad”>
</form>
</body>
</html>
<%
‘ Cadastrando dentro do arquivo XML
If Request.Form(”btCad”) = “Cadastrar” Then
Dim Nome, EMail, Telefone, Banco
Nome = Request.Form(”Nome”)
EMail = Request.Form(”EMail”)
Telefone = Request.Form(”Telefone”)
Banco = Server.MapPath(”Banco.xml”)
Set DocMT = Server.CreateObject(”Microsoft.XMLDOM”) ‘ Criando Objeto
DocMT.Load(Banco)
Set RaizXML = DocMT.documentElement
Set CriarReg = DocMT.createElement(”usuario”)
RaizXML.appendChild(CriarReg)
‘ Funcção para criar objetos dentro do XML

Function AlimentarXML(NomeElemento, NomeVariavel)
Set Campo = DocMT.createElement(””&NomeElemento&””)
Campo.Text = NomeVariavel
CriarReg.appendChild(Campo) ‘ Linha de criação de Objetos
End Function

Call AlimentarXML(”nome”, Nome)
Call AlimentarXML(”email”, EMail)
Call AlimentarXML(”telefone”, Telefone)

DocMT.Save(Banco)
Response.Write(”<script>alert(’Cadastrado com Sucesso!’);location=’Cadastro.asp’</script>”)
Set DocMT = Nothing
End If
%>

Para ficar mais fácil, deixei o código todo comentado, mas algumas linhas serão esclarecidas:

 

Para inserir dados no XML, usei o Microsoft.XMLDOM para conexão. Em cada inserção adiciono uma tag usuario com essa linha abaixo:

 

Set CriarReg = DocMT.createElement(”usuario”)

Como são três tags para ser alimentadas usei uma função de minha autoria para fazer esse trabalho, a [cor2]AlimentarXML[/cor2] e adiciono com a linha Call AlimentarXML(”nome”, Nome) e salvo tudo através do DocMT.Save(Banco) e pronto, é só testar e ver se o XML está sendo manipulado corretamente:

 

OBS: Quando testei no meu localhost, o arquivo Cadastro.asp deu erro de acesso. Teste ele em um servidor web e funcionou, caso isso aconteçam com vocês também.organizar o arquivo Visualizar.xsl

 

Visualizar.xsl

<?xml version=”1.0″?>
<xsl:stylesheet xmlns:xsl=”http://www.w3.org/TR/WD-xsl”>
<xsl:template match=”/”>
<center>
<font color=”#000000″ size=”2″ face=”MS Sans Serif”>Visualizando Dados</font>
<table width=”465″ border=”1″ cellspacing=”0″ cellpadding=”0″>
<tr>
<td width=”117″ height=”22″><div align=”center”><strong>Nome</strong></div></td>
<td width=”125″><div align=”center”><strong>E-mail</strong></div></td>
<td width=”107″><div align=”center”><strong>Telefone</strong></div></td>
<td width=”106″><div align=”center”><strong>Ações</strong></div></td>
</tr>
<xsl:for-each select=”cadastro/usuario”>
<tr align=”center”>
<td height=”22″><xsl:value-of select=”nome”/></td>
<td><xsl:value-of select=”email”/></td>
<td><xsl:value-of select=”telefone”/></td>
<td><a><xsl:attribute name=”href”>Editar.asp?nome=<xsl:value-of select=”nome”/><xsl:value-of select=”link”/></xsl:attribute>Editar</a>/<a><xsl:attribute name=”href”>Listar.asp?nome=<xsl:value-of select=”nome”/><xsl:value-of select=”link”/></xsl:attribute>Apagar</a></td>
</tr>
</xsl:for-each>
</table>
</center>
</xsl:template>
</xsl:stylesheet>

Com o stylesheet (que não vem ao caso explicar no momento) vamos fazendo a estrutura de visualização de todos os elementos da tag usuario através de um for-each assim

 

 

<xsl:for-each select=”cadastro/usuario”> e fechando com </xsl:for-each>

Pegamos o valor dos elementos com essa estrutura aqui: <xsl:value-of select=”nome_da_tag”/>.

 

Usamos o atributo <xsl:attribute name=”href”> para gerar links, no nosso caso para excluir e editar (que não será mostrado nesse artigo).

 

Em uma página chamada Listar.asp criamos os objetos para chamar o XML e o XSL e integrá-los com o transformNode

 

Set XSLDOC = Server.CreateObject(”Microsoft.XMLDOM”)
Set XMLDOC = Server.CreateObject(”Microsoft.XMLDOM”)
XMLDOC.Load(Server.MapPath(”Banco.xml”))
XSLDOC.Load(Server.MapPath(”Visualizar.xsl”))
Response.Write(XMLDOC.transformNode(XSLDOC))

Para deletar é simples, criamos um XMLDOC.documentElement para escolher qual nó vamos deletar e chamamos por querystring como tem no <xsl:attribute name=”href”> do Visualizar.xsl, que no caso usamos o select=”nome”, deletando com o removeChild, segue abaixo o código completo de Listar.asp

Listar.asp

<%@ Language="VBScript" %>
<html>
<body>
<a href="Cadastro.asp">CADASTRAR</a> - <a href="Listar.asp">LISTAR</a>
<br><br>
<%
Set XSLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM") ' Criando Objeto

Listando Dados

XMLDOC.Load(Server.MapPath("Banco.xml"))
XSLDOC.Load(Server.MapPath("Visualizar.xsl"))
Response.Write(XMLDOC.transformNode(XSLDOC))

Deletando Dados

If CStr(Request.QueryString("Nome")) <> "" Then
Banco = Server.MapPath("Banco.xml") ' Chamando o Arquivo XML para sofrer alteração
XMLDOC.Load(Banco)
Set RaizXML = XMLDOC.documentElement
Set AlterarReg = RaizXML.selectSingleNode("usuario[nome='"&Request.QueryString("nome")&"']")
RaizXML.removeChild(AlterarReg) ' Linha de remoção de Objetos
XMLDOC.Save(Banco)
Response.Write("<script>alert('Deletado com Sucesso!');location='Listar.asp'</script>")
End If
Set XSLDOC = Nothing
Set XMLDOC = Nothing
%>
</body>
</html>
Uma observação: 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á.

Criem um arquivo chamado Editar.asp e nele serão lidas todas as tags que contém no arquivo Banco.xml , mas com a querystring passada pelo arquivo Ler.asp 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.
Vamos primeiro listar todos os registros.
<%@ Language="VBScript" %>
<%
Dim Banco : Banco = Server.MapPath("Banco.xml")
Set XMLDOC = Server.CreateObject("Microsoft.XMLDOM")
Set objLER = Server.CreateObject("Microsoft.XMLDOM")
XMLDOC.Load(Banco)
Set objLER = XMLDOC.getElementsByTagName("*")
%>

Logo abaixo desse script vamos criar o formulário com um “for” fazendo a varredura nas tags para pegar só o valor de tag citado na querystring passada:

<html>
<body>
<a href=”Cadastro.asp”>CADASTRAR</a> – <a href=”Listar.asp”>LISTAR</a>
<br><br>
<form action=”Editar.asp?nome=<%=Request.QueryString(”nome”)%>” method=”post”>
<input type=”hidden” name=”CampoUpdate” value=”<%=Request.QueryString(”nome”)%>”>
<%
For i = 0 To (objLER.length – 1)
If objLER.Item(i).Text = “”&Request.QueryString(”nome”)&”" Then
%>

<b>Nome: </b><input type=”text” name=”Nome” value=”<% Response.Write(objLER.Item(i).Text) %>”><br>

<b>E-Mail: </b><input type=”text” name=”EMail” value=”<% Response.Write(objLER.Item(i+1).Text) %>”><br>

<b>Telefone: </b><input type=”text” name=”Telefone” value=”<% Response.Write(objLER.Item(i+2).Text) %>”><br>

<%

End If

Next

%>

<input type=”submit” value=”Editar” name=”btEdt”>

</form>

</body>

</html>

onde temos If objLER.Item(i).Text = “”&Request.QueryString(”nome”)&”" Then, é ela que está “selecionando” a tag que quero mostrar.

 

E por fim a edição:

 

<%

If Request.Form(”btEdt”) = “Editar” Then

Dim Nome, EMail, Telefone, CampoUpdate, i

Nome = Request.Form(”Nome”)

EMail = Request.Form(”EMail”)

Telefone = Request.Form(”Telefone”)

CampoUpdate = Request.Form(”CampoUpdate”)

Set objLER_upDate = XMLDOC.getElementsByTagName(”*”)

For i = 0 To (objLER.length – 1)

 

If objLER.Item(i).Text = “”&CampoUpdate&”" Then

 

objLER.Item(i).Text = Nome

 

objLER.Item(i+1).Text = EMail

 

objLER.Item(i+2).Text = Telefone

 

End If

 

Next

 

XMLDOC.Save(Banco)

 

Response.Write(”<script>alert(’Editado com Sucesso!’);location=’Listar.asp’</script>”)

 

Set objLER_upDate = Nothing

 

End If

 

Set objLER = Nothing

 

Set XMLDOC = Nothing

 

%>

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.