Ver Mensaje Individual
  #2 (permalink)  
Antiguo 11/09/2007, 03:09
tammander
 
Fecha de Ingreso: enero-2006
Ubicación: Torroles (Costa der Só)
Mensajes: 1.017
Antigüedad: 19 años, 3 meses
Puntos: 7
Re: Leer XML y usar algunos de los datos

Tendrias que poner cual es el nodo raiz. Algo asi:

Código:
<?xml version="1.0" encoding="UTF-8"?>
<noticias> <-------------------------------------------- nodo raiz
    <item>
            <title>TITULO</title>
           <link>ENLACE</link>
           <pubdate>FECHA</pubdate>
           <author>AUTOR</author>
           <category>CATEGORIA</category>
    </item>
</noticias> <------------------------------------------- final del nodo raiz
Aunque yo pondria la categoria como atributo del nodo item

<item category="13">
....
</item>

Para leer un archivo XML dispones de varios componentes. Generalmente el objeto que se usa para gestionar dichos archivos se llama XMLDOM o MSXML. Se llama con el CreateObject

set objXml = server.CreateObject("Microsoft.XMLDOM")
o
set objXml = server.CreateObject("MSXML2.DOMDocument")

donde MSXML2 puede ser MSXML3, MSXML4 o la version disponible.

Una vez instanciado, el objeto dispone de una serie de metodos y propiedades muy interesantes.

Aqui puedes verlos.

Voy a ponerte un ejemplo simple. Imagina que dispones de un archivo XML con los paises del mundo. Algo asi:

paises.xml
Código:
<?xml version="1.0" encoding="UTF-8" ?> 
<paises>
    <pais id="af">Afghanistan</pais>
    <pais id="ab">Albania</pais>
....

</paises>

Y queremos montar un combo box con los datos. Primero cargamos el archivo XML en el objeto

Código:
set objXml = server.CreateObject("MSXML2.DOMDocument")
objxml.async = false

' Aqui cargamos el archivo en el objeto
objxml.load(server.MapPath('paises.xml'))

' Gestion de errores
if objxml.parseError.errorCode <> 0 Then
        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)
        response.End()
end if
Una vez pasada la criba de los errores, vayamos al proceso:

Código:
' Averiguamos cuantos paises tenemos
numPaises = objxml.selectSingleNode("/paises").childNodes.length

' Ahora montemos el combo box
response.write("<select id='paises' name='paises'>")
for n = 0 to numPaises-1
     response.write("<option value='" & objxml.selectSingleNode("/paises").childNodes(n).attributes(0).Value & "'>")
     response.write(objxml.selectSingleNode("/paises").childNodes(n).Text)
     response.write("</option>" & vbCrLf)
next

' cerramos el select
response.write("</select>" & vbCrLf)

' liberamos el objeto
set objxml = nothing

Como veras, es mas controlar donde estan los nodos que necesitas buscar (es algo muy parecido a los niveles de los movieclips en ActionScript). Fijate como me muevo por los childnodes.


Suerte!!


Un saludo
__________________
"Tus pecados son el estiércol sobre el que florecerán las flores de tus virtudes" - Gerald Messadié -