Ir para conteúdo

Arquivado

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

m4r1n0

[Resolvido] Loop dentro de outro - ASP + XML

Recommended Posts

Fala Pessoal !

 

Estou puxando informações de um XML com a seguinte estrutura:

 

O Problema é que não estou conseguindo criar a sequencia de Fotos do Imovel utilizando um segundo loop.

 

imoveis.xml

<?xml version="1.0"?> 
<Carga>
<Imoveis>
<Imovel>
 <CodigoImovel>A13784</CodigoImovel> 
 <TipoImovel>Apartamento</TipoImovel> 
 <Fotos>
   <Foto>
   <NomeArquivo>050820111641155jqq0d.JPG</NomeArquivo> 
   <URLArquivo>/imoveis/050820111641155jqq0d.JPG</URLArquivo> 
   <Principal>1</Principal> 
   </Foto>
 <Foto>
   <NomeArquivo>05082011164120wjdtbp.JPG</NomeArquivo> 
   <URLArquivo>/imoveis/05082011164120wjdtbp.JPG</URLArquivo> 
   <Principal>0</Principal> 
 </Foto>
 <Foto>
   <NomeArquivo>0508201116411522zxi2.JPG</NomeArquivo> 
   <URLArquivo>/imoveis/0508201116411522zxi2.JPG</URLArquivo> 
   <Principal>0</Principal> 
 </Foto>
<Foto>
   <NomeArquivo>05082011164118umwera.JPG</NomeArquivo> 
   <URLArquivo>/imoveis/05082011164118umwera.JPG</URLArquivo> 
   <Principal>0</Principal> 
 </Foto>
 <Foto>
   <NomeArquivo>05082011164118u0xavb.JPG</NomeArquivo> 
   <URLArquivo>/imoveis/05082011164118u0xavb.JPG</URLArquivo> 
   <Principal>0</Principal> 
 </Foto>
 </Fotos>
</Imovel>
</Imoveis>
</Carga>

 

 

ler_imoveis.asp

<%@ language = "VBScript" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
<head>
<title>Ler Imoveis</title>
</head>
<body>
<%
set docXML = server.createObject("Microsoft.XMLDOM")
docXML.async = false
docXML.load(server.mappath("imoveis.xml"))
set registro = docXML.getElementsByTagName("Imovel")
for i=0 to registro.length - 1

codigoImovel = registro.item(i).selectSingleNode("./CodigoImovel").text
tipoImovel= registro.item(i).selectSingleNode("./TipoImovel").text
response.write "Codigo: " & codigoImovel & "<BR>Tipo: " & tipoImovel & "<BR>"

//Aqui que não estou conseguindo puxar todas as fotos de nó, ele só puxa a primeira.
fotosImovel = registro.item(i).selectSingleNode("./Fotos/Foto/URLArquivo").text
response.write "<img src=""" & fotosImovel & """ width=""100"" heith=""100""/><BR><BR><BR> " 

next
%>
</body>
</html>

 

Quem puder me ajudar, agradeço !!!

 

Abs !!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não testei mas acredito que se fizer assim funcione:

 

Substitua:

 

//Aqui que não estou conseguindo puxar todas as fotos de nó, ele só puxa a primeira.
fotosImovel = registro.item(i).selectSingleNode("./Fotos/Foto/URLArquivo").text
response.write "<img src=""" & fotosImovel & """ width=""100"" heith=""100""/><BR><BR><BR> "

por:

set fotos= registro.getElementsByTagName("Fotos")
for x=0 to fotos.length - 1
fotosImovel = fotos.item(x).selectSingleNode("./Fotos/Foto/URLArquivo").text
response.write "<img src=""" & fotosImovel & """ width=""100"" heith=""100""/><BR><BR><BR> " 
next
set fotos=Nothing

 

Sugestões:

 

  • Destrua os objetos depois de usar para liberar memória ex: set docXML=Nothing
  • faça seu xml completamente em minúsculo, assim como seu HTML
  • adote se possível xhtml

Espero que ajude!

Compartilhar este post


Link para o post
Compartilhar em outros sites

ou utilize o While...Wend, na verdade um loop simples, resolve seu problema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Não testei mas acredito que se fizer assim funcione:

 

Substitua:

 

//Aqui que não estou conseguindo puxar todas as fotos de nó, ele só puxa a primeira.
fotosImovel = registro.item(i).selectSingleNode("./Fotos/Foto/URLArquivo").text
response.write "<img src=""" & fotosImovel & """ width=""100"" heith=""100""/><BR><BR><BR> "

por:

set fotos= registro.getElementsByTagName("Fotos")
for x=0 to fotos.length - 1
fotosImovel = fotos.item(x).selectSingleNode("./Fotos/Foto/URLArquivo").text
response.write "<img src=""" & fotosImovel & """ width=""100"" heith=""100""/><BR><BR><BR> " 
next
set fotos=Nothing

 

Sugestões:

 

  • Destrua os objetos depois de usar para liberar memória ex: set docXML=Nothing
  • faça seu xml completamente em minúsculo, assim como seu HTML
  • adote se possível xhtml

Espero que ajude!

 

Ta dando esse erro:

Script error detected at line 19. 
Source line: set fotos= registro.getElementsByTagName("Fotos") 
Description: Object doesn't support this property or method: 'registro.getElementsByTagName'

Sobre o WHILE, poderia me dar algum exemplo ?

 

Abs !

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ta dando esse erro:

Script error detected at line 19. 
Source line: set fotos= registro.getElementsByTagName("Fotos") 
Description: Object doesn't support this property or method: 'registro.getElementsByTagName'

Sobre o WHILE, poderia me dar algum exemplo ?

 

Abs !

 

Faltou um detalhe, desculpe...

 

Substitua:

set fotos= registro.getElementsByTagName("Fotos")

 

O nó principal não estava selecionado, não testei de novo porque onde estou não posso, mas agora acho que vai!

 

Por:

set fotos= registro(i).getElementsByTagName("Fotos")  

Compartilhar este post


Link para o post
Compartilhar em outros sites

Faltou um detalhe, desculpe...

 

Substitua:

set fotos= registro.getElementsByTagName("Fotos")

 

O nó principal não estava selecionado, não testei de novo porque onde estou não posso, mas agora acho que vai!

 

Por:

set fotos= registro(i).getElementsByTagName("Fotos")  

 

Agora funcionou sem erros, só que só está exibindo a primeira foto de cada "Imovel"... parece que o segundo loop não ta acontecendo.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Agora funcionou sem erros, só que só está exibindo a primeira foto de cada "Imovel"... parece que o segundo loop não ta acontecendo.

 

Vamos para mais uma tentativa então!

 

set fotos= registro(i).getElementsByTagName("Fotos")
set foto= fotos(0).getElementsByTagName("Foto")
for x=0 to foto.length - 1
fotosImovel = foto.item(x).selectSingleNode("./Fotos/Foto/URLArquivo").text
response.write "<img src=""" & fotosImovel & """ width=""100"" heith=""100""/><BR><BR><BR> " 
next
set foto=Nothing
set fotos=Nothing

 

Partindo do pressuposto que só existe um nó de fotos por imóvel não é necessário fazer o for em "fotos" e sim em "foto" se houvesse mais de um nó de "fotos" precisariamos de um for extra.

 

Se funcionar como você gostaria não esquece de avisar!

Compartilhar este post


Link para o post
Compartilhar em outros sites

Vamos para mais uma tentativa então!

 

set fotos= registro(i).getElementsByTagName("Fotos")
set foto= fotos(0).getElementsByTagName("Foto")
for x=0 to foto.length - 1
fotosImovel = foto.item(x).selectSingleNode("./Fotos/Foto/URLArquivo").text
response.write "<img src=""" & fotosImovel & """ width=""100"" heith=""100""/><BR><BR><BR> " 
next
set foto=Nothing
set fotos=Nothing

 

Partindo do pressuposto que só existe um nó de fotos por imóvel não é necessário fazer o for em "fotos" e sim em "foto" se houvesse mais de um nó de "fotos" precisariamos de um for extra.

 

Se funcionar como você gostaria não esquece de avisar!

 

 

Amigo, funcionou perfeitamente.

 

Sou muito grato por sua ajuda.

 

Um grande abraço.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pessoal boa noite sou novo por aqui e também estou quebrando a cabeça com carga de XML.

 

Criei um portal de classificados de Imóveis e na hora de tentar vender os anúncios ou até mesmo oferecer gratuitamente, comecei a passar por esta dificuldade.

 

Todas imobiliárias inserem seus anúncios nos portais de classificados por carga de XML, fiz até contato com algumas empresas de software que disponibilizaram um modelo para eu analisar e integrar.

 

Só que agora tenho o arquivo de carga modelo de cada sistema e não estou conseguindo desenvolver o Robo / Script para a leitura do XML deles.

 

Por favor alguém no Fórum poderia me dar uma Luz ?

 

Help !!!!!

 

Sérgio - Santo André

 

sergioanjospereira@hotmail.com

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.