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

Bucle ASP con XMLDOM

Estas en el tema de Bucle ASP con XMLDOM en el foro de ASP Clásico en Foros del Web. Hola este ejemplo lo diseño en su día para que me cargara las variables desde una base de datos ACCES, el problema posterior es que ...
  #1 (permalink)  
Antiguo 08/03/2010, 06:29
 
Fecha de Ingreso: octubre-2009
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
Bucle ASP con XMLDOM

Hola este ejemplo lo diseño en su día para que me cargara las variables desde una base de datos ACCES, el problema posterior es que me daba un error asíncrono entre el servidor y el cliente, ya que uso un JQuery para cargar la galería, así que tras mucho intentarlo he desisitido de cargar los datos desde la base de datos y decidí hacer lo siguiente:

Usar un XML como comodín. Donde con otro script exporto los datos de la BD y los grabo en un XML. Acto siguiente para leerlo desde el Navegador llamo a ese XML y así resuelvo el asincronismo.

En resumen:

El caso es que ando muy perdido con XLDOM y sobre todo con el DO WHILE porque no se como estructurar el dichoso Bucle con XML para que me lea los datos del XML. Estoy leyéndome el FAQ de XLDOM, estoy googleando a muerte y también he mirado aquí en antiguos post y sigo en las mismas.


Este es el codigo:

Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
  2. <!-- ////////////////////////////////////////////////// START ///////////////////////////////////////////////////////// -->
  3. <div id="seccion">
  4.     <%
  5.         ' Variables.
  6.             Dim xml, oXml  
  7.             Dim v_id, v_link, v_titulo, v_seccion, v_describe
  8.             Dim Salto              
  9.         'Asigno Variables. 
  10.              items = "items"
  11.                  i = 1
  12.               v_id = xml.documentElement.childNodes(0).text '"v_id"
  13.             v_link = xml.documentElement.childNodes(1).text '"v_link"
  14.          v_seccion = xml.documentElement.childNodes(2).text '"v_seccion"
  15.           v_titulo = xml.documentElement.childNodes(3).text '"v_titulo"            
  16.         v_describe = xml.documentElement.childNodes(4).text '"v_describe"
  17.              Salto = Replace (cadena, vbCrLf, "<BR>")
  18.  
  19.         'Creo el objeto de XMLDOM
  20.             Set xml = Server.CreateObject("Microsoft.XMLDOM")
  21.         'No dejo que el archivo se edite si está en uso
  22.             xml.async = False
  23.         'Cargo el archivo
  24.             xml.load (Server.MapPath("./db/vid.xml"))
  25.    
  26.         'Si el archivo XML tiene errores
  27.             If xml.parseError.errorCode <> 0 Then
  28.                 Response.Write("<p> Hay un error en el archivo XML: <b>" "<p>")  
  29.                 Response.Write("<b>"& xml.parseError.reason &  xml.parseError.line & xml.parseError.linepos)
  30.                 Response.End
  31.             End If  
  32.            
  33.         'Si no contiene errores continuo. Creo un objeto XML y ejecuto la orden.
  34.             Set oXML = xml.getElementsByTagName(items+i)
  35. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     BUCLE     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  36.         'Recorre todas las filas del resultado
  37.             Do While Not oXML.EOF
  38.     %> 
  39.         <div id="demo">
  40.                 <ul>
  41.                     <li><%= v_id %>º</li>
  42.                     <li><%= v_link %></li>
  43.                     <li><%= v_seccion %></li>
  44.                     <li><%= v_titulo %></li>
  45.                     <li><%= v_describe %></li>                                     
  46.                 </ul>
  47.         </div>
  48.     <%
  49.         'Pasa a la siguiente fila
  50.             oXML.MoveNext()
  51.             i=i+1
  52.             Loop
  53. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     BUCLE     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  54.         'Libera memoria            
  55.             oXML.Close
  56.             Set oXML = Nothing
  57.             xml.Close
  58.             Set xml = Nothing
  59.            
  60.         'Cerramos variables
  61.             Set v_id = Nothing
  62.             Set v_link = Nothing
  63.             Set v_titulo = Nothing
  64.             Set v_seccion = Nothing
  65.             Set v_describe = Nothing
  66.     %>
  67. </div>
  68. <!-- ////////////////////////////////////////////////// FIN ///////////////////////////////////////////////////////// -->

El archivo XML sería este:

Código XML:
Ver original
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2.      <items>
  3.     <item>
  4.         <v_id>1</v_id>
  5.         <v_link>http://www.youtube.com/watch?v=qMlmcQTN-Es</v_link>
  6.         <v_titulo>Título.</v_titulo>
  7.         <v_seccion>Sección.</v_seccion>
  8.         <v_describe>Descripción.</v_describe>
  9.     </item>
  10.     <item>
  11.         <v_id>2</v_id>
  12.         <v_link>http://www.youtube.com/watch?v=qMlmcQTN-Es</v_link>
  13.         <v_titulo>Título.</v_titulo>
  14.         <v_seccion>Sección.</v_seccion>
  15.         <v_describe>Descripción.</v_describe>
  16.     </item>
  17.     </items>

De verdad Mil gracias si me podéis echar un cable.
Saludos.
  #2 (permalink)  
Antiguo 10/03/2010, 19:08
 
Fecha de Ingreso: octubre-2009
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Bucle ASP con XMLDOM

Bueno al final no le queda a uno más que resolver sus dudas a base de aprender. He tardado lo mio hasta aclararme como trabaja el bucle con XMLDOM, creo que es bastante sencillo el código que voy a poner, así que espero que ayude a mucha gente y bueno si ha alguno le apetece mejorarlo o aconsejarnos pues mejor para todos. Yo os dejo aquí con "FOR" el resultado que conseguí, si alguno se anima y me dice como se consigue (si es posible) con DO WHILE pos me ayudaría a aprender algo más y a quitarme la espinita que no supe como conseguirlo con ese bucle. :)

Bueno pues si a alguno le vale aquí esta:
FICHERO ASP 3.0/Classic:
Código ASP:
Ver original
  1. <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
  2. <!-- ////////////////////////////////////////////////// START ///////////////////////////////////////////////////////// -->
  3. <div id="seccion">
  4.     <%
  5.         ' Variables.
  6.             Dim xmlObj, v_item
  7.             Dim v_id, v_link, v_titulo, v_seccion, v_describe
  8.             Dim Salto
  9.            
  10.         'Asigno Variables.
  11.             Salto = Replace (cadena, vbCrLf, "<BR>")
  12.            
  13.         'Creo el objeto de XMLDOM
  14.             Set xmlObj = Server.CreateObject("Microsoft.XMLDOM")
  15.         'No dejo que el archivo se edite si está en uso
  16.             xmlObj.async = False
  17.             xmlObj.setProperty "ServerHTTPRequest", true
  18.             xmlObj.validateOnParse = False
  19.             xmlObj.resolveExternals = False
  20.            
  21.         'Cargo el archivo
  22.             xmlObj.load (Server.MapPath("vid.xml"))        
  23.            
  24.         'Si el archivo XML tiene errores
  25.             If xmlObj.parseError.errorCode <> 0 Then
  26.                 Response.Write("Error de Lectura (Por favor, ponerse en contacto con el webmaster).<br />FilePos: " & xmlObj.parseError.filepos & "<br /> Línea: " & xmlObj.parseError.Line & "<br /> Causa: " & xmlObj.parseError.reason & "<br /> Ocurrió en: " & xmlObj.parseError.srcText & "<br /> Archivo: " & xmlObj.parseError.URL)
  27.                 Response.End               
  28.         'Si no contiene errores continuo.
  29.             Else                   
  30.             'Creo v_item y ejecuto la orden.
  31.                 Set v_item = xmlObj.getElementsByTagName("v_galeria/v_item")
  32.                                                
  33. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     BUCLE     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
  34.             'Recorre todas las filas del resultado
  35.                 For n=0 To v_item.length-1
  36.                      v_id = xmlObj.selectSingleNode("/v_galeria").childNodes(n).childNodes(0).Text '"v_id"
  37.                    v_link = xmlObj.selectSingleNode("/v_galeria").childNodes(n).childNodes(1).Text '"v_link"
  38.                 v_seccion = xmlObj.selectSingleNode("/v_galeria").childNodes(n).childNodes(2).Text '"v_seccion"
  39.                  v_titulo = xmlObj.selectSingleNode("/v_galeria").childNodes(n).childNodes(3).Text '"v_titulo"             
  40.                v_describe = xmlObj.selectSingleNode("/v_galeria").childNodes(n).childNodes(4).Text '"v_describe"
  41. %> 
  42.                 <div id="">
  43.                     <ul>
  44.                         <li><%= v_id %>º</li>
  45.                         <li><%= v_link %></li>
  46.                         <li><%= v_seccion %></li>
  47.                         <li><%= v_titulo %></li>
  48.                         <li><%= v_describe %></li>                                     
  49.                     </ul>
  50.                 </div>
  51.  
  52.     <%  
  53. '''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''     BUCLE     ''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''            End If
  54.                 'Pasa a la siguiente fila
  55.                     Next
  56.                 'Libera memoria            
  57.                     'v_item.Close
  58.                     Set v_item = Nothing
  59.                     'xmlObj.Close
  60.                     Set xmlObj = Nothing
  61.                    
  62.                 'Cerramos variables
  63.                     Set v_id = Nothing
  64.                     Set v_link = Nothing
  65.                     Set v_titulo = Nothing                                                  
  66.                     Set v_seccion = Nothing
  67.                     Set v_describe = Nothing
  68.             End If
  69.     %>
  70. </div>
  71. <!-- ////////////////////////////////////////////////// FIN ///////////////////////////////////////////////////////// -->

FICHERO XML:
Código XML:
Ver original
  1. <?xml version="1.0" encoding="iso-8859-1"?>
  2. <v_galeria>
  3.     <v_item>
  4.         <v_id>1</v_id>
  5.         <v_link>http://www.youtube.com/1</v_link>
  6.         <v_titulo>Titulo 1</v_titulo>
  7.         <v_seccion>Seccion 1</v_seccion>
  8.         <v_describe>Describe 1.</v_describe>
  9.     </v_item>
  10.     <v_item>
  11.         <v_id>2</v_id>
  12.         <v_link>http://www.youtube.com/2</v_link>
  13.         <v_titulo>Titulo 2</v_titulo>
  14.         <v_seccion>Seccion 2</v_seccion>
  15.         <v_describe>Describe 2.</v_describe>
  16.     </v_item>
  17.     <v_item>
  18.         <v_id>3</v_id>
  19.         <v_link>http://www.youtube.com/3</v_link>
  20.         <v_titulo>Titulo 3</v_titulo>
  21.         <v_seccion>Seccion 3</v_seccion>
  22.         <v_describe>Describe 3.</v_describe>
  23.     </v_item>
  24.     <v_item>
  25.         <v_id>4</v_id>
  26.         <v_link>http://www.youtube.com/4</v_link>
  27.         <v_titulo>Titulo 4</v_titulo>
  28.         <v_seccion>Seccion 4</v_seccion>
  29.         <v_describe>Describe 4.</v_describe>
  30.     </v_item>
  31.     <v_item>
  32.         <v_id>5</v_id>
  33.         <v_link>http://www.youtube.com/5</v_link>
  34.         <v_titulo>Titulo 5</v_titulo>
  35.         <v_seccion>Seccion 5</v_seccion>
  36.         <v_describe>Describe 5.</v_describe>
  37.     </v_item>
  38. </v_galeria>
  #3 (permalink)  
Antiguo 15/03/2010, 06:12
 
Fecha de Ingreso: octubre-2009
Mensajes: 11
Antigüedad: 14 años, 5 meses
Puntos: 0
Respuesta: Bucle ASP con XMLDOM

Se me olvido. Este es el fin de tanto quebradero de cabeza:
[URL="http://www.xtremexperience.es/videos.asp"]http://www.xtremexperience.es/videos.asp[/URL]

Tengo que mejorar el diseño evidentemente que esta todavía bastante simple, pero lo resolveré más adelante ya que ahora tengo que revisar los errores que me da con jQuery & jQueryUI. El error en sí, lo tengo en la carga de esta pagina sobre el index de la web. Es decir en videos.asp tengo un script que me carga las secciones dentro de un div/id contenedor y como esta galería hace con otro script exactamente lo mismo, creo que al tener mayor jerarquía el index invalida el script de la sección. Por tanto se cruzan, me esta viniendo bastante bien por una parte ya que ahora empiezo a interpretar correctamente las librerías ya que hasta hoy no me había molestado en leerme su documentación. Como muchas otras cosas miraba código y lo amoldaba a l que quería.

Al final este post va a ser un bitacora de desarrollo, pero todo sea porque al proximo que se le ocurra algo por el estilo, tenga una referencía para consultar sus dudas.

Espero en unas semanas ya traeros todo resuelto.

Saludos y Volvere !!
:)

Etiquetas: asp, bucle
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 20:37.