Ver Mensaje Individual
  #1 (permalink)  
Antiguo 08/09/2014, 04:59
Avatar de angel_dope
angel_dope
 
Fecha de Ingreso: noviembre-2002
Ubicación: Valencia
Mensajes: 737
Antigüedad: 21 años, 5 meses
Puntos: 8
Problemas al procesar XML

Hola a tod@s tengo un problema a la hora de parsear un XML, me explico: le el archivo y cuento cuantos items hay, hasta ahí ningún problema. Después muestro desde el item 9 hasta el 13 los valores que quiero y aquí viene le problema. Mi código es el siguiente:

Código ASP:
Ver original
  1. set objXml = server.CreateObject("MSXML2.DOMDocument")
  2.     objxml.async = false
  3.    
  4.     ' Aqui cargamos el archivo en el objeto
  5.     objxml.load(server.mappath("./tmp/xml_wm.xml"))
  6.    
  7.     ' Gestion de errores
  8.     if objxml.parseError.errorCode <> 0 Then
  9.             response.Write("Error de Lectura (Por favor, ponerse en contacto con el webmaster).<br />FilePos: " & objxml.parseError.filepos & "<br /> Línea: " & objxml.parseError.Line & "<br /> Causa: " & objxml.parseError.reason & "<br /> Ocurrió en: " & objxml.parseError.srcText & "<br /> Archivo: " & objxml.parseError.URL)
  10.             response.End()
  11.     end if
  12.     numNoticias = objxml.selectSingleNode("/rss/channel").childNodes.length
  13.     if numNoticias <= 5 then
  14.         numnoticias = 0
  15.     else
  16.         for n = 9 to 13
  17.             response.write "titulo = " & objxml.selectSingleNode("/rss/channel").childNodes(n).childNodes(0).Text
  18.             response.write "<br>enlace = " & objxml.selectSingleNode("/rss/channel").childNodes(n).childNodes(1).Text
  19.             response.write "<br>resumen = " & objxml.selectSingleNode("/rss/channel").childNodes(n).childNodes(12).Text
  20.             response.write "<br><br>"
  21.         next
  22.  
  23.     end if
Con lo que muestra los elementos en función de su posición, pero lo malo es que la posición del último elemento puede variar, lo mismo está el 11, que el 13 o el 19, ya que por medio varía el número de algunas informaciones.

He intentado cambiarlo de forma que fuese

Código ASP:
Ver original
  1. response.write "titulo = " & objxml.selectSingleNode("/rss/channel/item/title")Text

Pero entonces obviamente siempre me saca el mismo valor ya que no se tiene en cuenta el contador. En cambio si pongo esto:

Código ASP:
Ver original
  1. response.write "titulo = " & objxml.selectSingleNode("/rss/channel").childNodes(n).("title").Text

me da un error. Si dejo las comillas dice que se esperaba un identificador y si las quito me dice que el objeto no acepta esa propiedad.

¿Cómo puedo acceder a los valores title, link y description sin depende de la posición que ocupen dentro de ITEM, pero accediendo a ITEM en función del contador?

Salu2 y muchas gracias por adelantado
__________________
Vayamos por Partes :: Jack el Destripador