Foros del Web » Programando para Internet » ASP Clásico »

Problema con un bucle

Estas en el tema de Problema con un bucle en el foro de ASP Clásico en Foros del Web. Estoy intentando procesar un fichero xml pero no consigo solucionar un problema con el bucle de repetición. Al transformarlo en html me aparece sólo el ...
  #1 (permalink)  
Antiguo 19/08/2009, 18:24
 
Fecha de Ingreso: agosto-2009
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Problema con un bucle

Estoy intentando procesar un fichero xml pero no consigo solucionar un problema con el bucle de repetición. Al transformarlo en html me aparece sólo el primer elemento pero luego no lee a partir del segundo (quiero que me aparezcan ocho). El código es éste:


<%
Option Explicit
Response.Buffer = True
Dim xml, i
Set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = False
xml.load ("friends_timeline.xml")
For i = 1 to 8
Dim profile_image_url, name1, text, created_at
profile_image_url = xml.documentElement.childNodes(1).childNodes(9).ch ildNodes(5).text
name1 = xml.documentElement.childNodes(1).childNodes(9).ch ildNodes(1).text
text = xml.documentElement.childNodes(1).childNodes(2).te xt
created_at = xml.documentElement.childNodes(i).childNodes(0).te xt
Set xml = Nothing
%>
<html>
<head>
<title>TWITTER</title>
</head>
<body>

<table width="300" border="0" cellspacing="0" cellpadding="2">
<tr>
<td><img src="<%= profile_image_url %>" ALIGN="LEFT"> <font face="Arial, Helvetica, sans-serif" size="2"> <strong> <%= name1 %> </strong><br>
<%= text %><br>
<% response.write i %>
<font color="#666666" size="1"><%= created_at %>
</div>
</font></font></td>
</tr>
</table>
<%Next %>
<p>&nbsp;</p>
</body>
</html>


¿Alguien me puede ayudar?
El código del fichero XML es el que da twitter, es decir, tiene esta estructura:

<statuses type="array">
<status>
<created_at>Wed Aug 19 21:59:18 +0000 2009</created_at>
<id>3414061222</id>
<text>Orlando is crowded</text>
<source>web</source>
<truncated>false</truncated>
<in_reply_to_status_id/>
<in_reply_to_user_id/>
<favorited>false</favorited>
<in_reply_to_screen_name/>
<user>...

y dentro de user diversos nodos interiores.
  #2 (permalink)  
Antiguo 20/08/2009, 05:39
 
Fecha de Ingreso: diciembre-2008
Ubicación: Madrid
Mensajes: 78
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problema con un bucle

1- Tienes las etiquetas de HTML, HEAD Y BODY dentro del bucle. Es decir, estás generando un código repitiendo 8 veces esas etiquetas.
2- Las mismas etiquetas, pero de cierre, las tienes fuera del bucle. Es decir, las abres 8 veces y solo las cierras una vez.
3- Creas la tabla dentro del bucle, si de la tabla lo único que te interesa es mostrar los datos de la celda, mete en el bucle solo las etiquetas TR Y TD.
4- Dentro del bucle cierras un DIV que no veo abrirse en ningún lado, probablemente este sea tu problema, peor yo arreglaría todo :)

saludos
  #3 (permalink)  
Antiguo 20/08/2009, 06:03
Avatar de Adler
Colaborador
 
Fecha de Ingreso: diciembre-2006
Mensajes: 4.671
Antigüedad: 18 años, 3 meses
Puntos: 126
Respuesta: Problema con un bucle

Hola

En principio el problema parece estar en que las vars se sobrescriben una vez tras otra

Suerte
__________________
Los formularios se envían/validan con un botón Submit
<input type="submit" value="Enviar" style="background-color:#0B5795; font:bold 10px verdana; color:#FFF;" />
  #4 (permalink)  
Antiguo 20/08/2009, 07:13
 
Fecha de Ingreso: agosto-2009
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problema con un bucle

Ya he hecho todas esas correcciones. Ahora me aparece una serie pero siempre con el mismo elemento y todavía no identifico el problema. El código ha quedado así:




<html>
<head>
<title>TWITTER</title>
</head>
<body>


<%



Dim xml
Set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = False
xml.load ("friends_timeline.xml")


Dim profile_image_url, name1, text, created_at
created_at = xml.documentElement.childNodes(0).childNodes(0).te xt
name1 = xml.documentElement.childNodes(0).childNodes(9).ch ildNodes(1).text
profile_image_url = xml.documentElement.childNodes(0).childNodes(9).ch ildNodes(5).text
text = xml.documentElement.childNodes(0).childNodes(2).te xt



Set xml = Nothing


%>




<table width="300" border="0" cellspacing="0" cellpadding="2">

<%
Dim i

for i = 0 to 6

%>
<tr>
<td><img src="<%= profile_image_url %>" ALIGN="LEFT"> <font face="Arial, Helvetica, sans-serif" size="2"> <strong> <%= name1 %> </strong><br>
<%= text %><br>
<font color="#666666" size="1"><%= created_at %>

</font></font></td>
</tr>
<% next %>

</table>




<p>&nbsp;</p>
</body>
</html>
  #5 (permalink)  
Antiguo 20/08/2009, 07:55
 
Fecha de Ingreso: diciembre-2008
Ubicación: Madrid
Mensajes: 78
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problema con un bucle

A pesar de que generas bien el buble, siempre estás llamando al primer elemento del archivo XML.

Cita:
created_at = xml.documentElement.childNodes(0).childNodes(0).te xt
name1 = xml.documentElement.childNodes(0).childNodes(9).ch ildNodes(1).text
profile_image_url = xml.documentElement.childNodes(0).childNodes(9).ch ildNodes(5).text
text = xml.documentElement.childNodes(0).childNodes(2).te xt

Cambia xml.documentElement.childNodes(0) por xml.documentElement.childNodes(i).

i es la variable autonumérica asignada (for i=0) al bucle.

saludos
  #6 (permalink)  
Antiguo 20/08/2009, 08:03
 
Fecha de Ingreso: agosto-2009
Mensajes: 3
Antigüedad: 15 años, 8 meses
Puntos: 0
Respuesta: Problema con un bucle

Efectivamente, ése era el error.
Ahora funciona perfectamente.
Muchas gracias
  #7 (permalink)  
Antiguo 20/08/2009, 08:10
 
Fecha de Ingreso: diciembre-2008
Ubicación: Madrid
Mensajes: 78
Antigüedad: 16 años, 4 meses
Puntos: 2
Respuesta: Problema con un bucle

Me alegro :)
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 10:27.