Ir para conteúdo

POWERED BY:

Arquivado

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

xanburzum

ler XML e exibir em lista <ul>

Recommended Posts

exemplo para ler XML e exibir em lista <ul>

 

xml

 

<Destinos>
<Estado>Rio de Janeiro</Estado> 
<Destino>        
<Cidade>Araruama</Cidade>    
    <Link>Arara</Link> 
</Destino> 

 <Destino>  
      <Cidade>Cabo Frio</Cidade> 
       <Link>Cabufa</Link>
 </Destino>
</Destinos>

lendo XML

Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.setProperty "ServerHTTPRequest", True 
objXML.async = False
objXML.Load("xml.asp")
if objXML.parseError.errorCode <> 0 Then
 Response.Write "<p>erro</p>"
else
response.Write objXML.getElementsByTagName("Estado").item(0).Text 'Estado
Set objLst = objXML.getElementsByTagName("Destino")
 cont = 0 
For i = 0 To objLst.Length - 1
...                     
   Response.Write "<h6>"&objXML.getElementsByTagName("Cidade").item(i).Text&"</h6>"
 ...
Next
end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

Aqui de erro :mellow:

 

Tipo de erro:

Erro de tempo de execução do Microsoft VBScript (0x800A01A8)

Objeto necessário: 'objXML.getElementsByTagName(...).item(...)'

/top_aqui/a/index.asp, line 9

 

nessa linha

 

response.Write objXML.getElementsByTagName("Estado").item(0).Text 'Estado

Tentei achar o erro e não achei :huh: alguém poderia me explicar o que poderia esta acontecendo?

 

* Xan coloca no post o autor do code nosso mano desisto http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

faltou a parte mais importante...

 

a parte do loop que faz o esquema hahahaha

 

vou postar como ficou aqui

 

xml

 


<?xml version="1.0" encoding="iso-8859-1"?>
<Destinos>
<Estado>Rio de Janeiro</Estado>
 <Destino>
 	<Cidade>Araruama</Cidade>
 	<Link>Arara</Link>
 	<Atracao>1</Atracao>
 	<Hotel>23</Hotel>
 	<Pousada>19</Pousada>
 </Destino>
 
 <Destino>
 	<Cidade>Cabo Frio</Cidade>
 	<Link>Cabufa</Link>
 	<Atracao>0</Atracao>
 	<Hotel>19</Hotel>
 	<Pousada>28</Pousada>
 </Destino>
</Destinos>

 

 

asp

 


Set objXML = Server.CreateObject("Microsoft.XMLDOM")
objXML.setProperty "ServerHTTPRequest", True 
objXML.async = False
objXML.Load("xml.xml")

if objXML.parseError.errorCode <> 0 Then
 Response.Write "<p><font color=red>erro no caminho.</font></p>"
else

response.Write "<h1>"&objXML.getElementsByTagName("Estado").item(0).Text&"</h1>"

 response.Write "<div>"
 Set objLst = objXML.getElementsByTagName("Destino")
 cont = 0
 For i = 0 To objLst.Length - 1

 	cont = cont+1
 	if cont = 1 then
 		response.Write "<ul>"
 	end if
 	if cont <= 3 then
 			Cidade = "<h6>"&objXML.getElementsByTagName("Cidade").item(i).Text&"</h6>"
 			Link = "<h6>"&objXML.getElementsByTagName("Link").item(i).Text&"</h6>"
 			Response.Write "<li>"&Cidade&Link&"</li>"
 	else
 		cont = 0
 	end if
 	if cont = 3 then
 		cont = 0
 		response.Write "</ul>"
 		Response.Write "<div style=""clear:both""></div>"
 	end if

 Next
 response.Write "</div>"
end if

Compartilhar este post


Link para o post
Compartilhar em outros sites

velho continua dando erro aqui, não alterei nadica de nada, coloquei da maneira como você colocou, tentei online como localmente porém em nenhum dos 2 o code funfou :mellow:

Compartilhar este post


Link para o post
Compartilhar em outros sites

uaii... doidera, não sabia que não funfava se não tivesse o endereço no load completo... haahahhaha vivendo e aprendendo!

 

Agora foi certinho, valew ae, bom script cara!

Compartilhar este post


Link para o post
Compartilhar em outros sites

esse precisa do caminho completo...

 

e se você tivesse lido a mensagem de erro: "<p><font color=red>erro no caminho.</font></p>"

 

ahahahahhahaha

 

 

 

vou adaptar esse codigo pra montar 3 colunas distinas da pagina de noticias

 

se precisar de mais de 3 por linha é so alterar os if

 

 if cont <= 3 then

 

 if cont = 3 then

 

 

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

Show, obrigado pela aula cara  http://forum.imasters.com.br/public/style_emoticons/default/thumbsup.gif este code será de bom uso!

 

uma mao lava a outra

 

depois daquela ajuda toda que você me deu...

 

 

 

minha irmã já é casada mais o lu ta solteirão huauahuhauha se quiser te apresento ele ahaahahaaaaaaa

 

passo a bola, ja tenho dona  http://forum.imasters.com.br/public/style_emoticons/default/innocent.gif

Compartilhar este post


Link para o post
Compartilhar em outros sites

contem um erro no codigo!

 

esse bloco impede o fechamento da tag </ul> caso o contador seja 2

 

if cont = 3 then
                cont = 0
                response.Write "</ul>"
                Response.Write "<div style=""clear:both""></div>"
        end if

 

 

 

 

se forem 8 registros:

 

1º bloco com 3

 

2º bloco com 3

 

3º bloco com 2 - aqui a tag nao fecha, esse é o erro

 

 

 

 

to tentando arrumar o erro, se alguem souber como pode postar

 

[]s

Compartilhar este post


Link para o post
Compartilhar em outros sites

pode depois que acabar os registros criar outro laço só para completar o ciclo só que sem valores ou apenas com um  

Compartilhar este post


Link para o post
Compartilhar em outros sites

sim, veja quantos faltam para fechar o ciclo e complete se for necessário

Compartilhar este post


Link para o post
Compartilhar em outros sites

seguinte... fiz a verificação fora do loop

 

durante o loop ele conta os elementos, abre e fecha UL caso os elementos dentro do bloco sejam 3

 

caso contrario um UL (o último) ficara aberto, entao fora do loop veremos o contador - se o cont for 0 zero, é pq esta aberto

 

 

 

 

o codigo ficou exatamente igual, mudando o if fora do loop

 

rs.MoveNext
		Loop

		if cont <> 0 then
			response.Write "<br /><br /><b>fecha UL</b>"
		end if

 

 

 

suponho que seja uma solucao razoavel apos quebrar a cabeca

Compartilhar este post


Link para o post
Compartilhar em outros sites

mas é assim mesmo

 

precisa fechar senão fica errado e dentro do loop não rola ou até rolaria mais ia precisar de um if da mesma forma para ver se os registros terminaram

 

só que considero fora mais limpo

Compartilhar este post


Link para o post
Compartilhar em outros sites

dentro do loop iria precisar de mais um contador... eu tentei e nao consegui achar a logica dentro do loop

 

haahahahhaha ai desisti, e meio sem querer veio essa forma

 

 

 

 

é melhor eu por um novo post com a atualização, editar o 1º, ou deixar assim mesmo?

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.