Generar un XML con ASP y Access
Aunque poco a poco me estoy desvinculando de ASP, hace poco me pedían unas cuantas líneas de código para generar un documento XML partiendo de los datos almacenados en una base de datos ACCESS.
4 pasos:
- Cabeceras
- Conexión a la base de datos
- Consulta a la base de datos
- Generar el árbol XML con los datos
Cosas básicas en ASP clásico:
- Nada de puntos y coma al final de cada línea (no existen delimitadores de líneas)
- Los nombres de variable no llevan ningún prefijo o carácter especial delante
- Para comentar código se utiliza un apóstrofe justo delante de la frase a comentar. (nada al final)
estas tres cosas hacen que me parezca realmente cochinote este lenguaje.
El código siguiente se conecta a la base de datos “mis-libros” que está en el directorio “datos”, y se crea un XML con una colección de libros, y para cada libro se muestra: su isbn, su titulo y autor.
<?xml version="1.0" encoding="ISO-8859-1" ?> <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% Response.CharSet = "iso-8859-1" response.ContentType = "text/xml" set conn=Server.CreateObject("ADODB.Connection") conn.provider="Microsoft.Jet.OLEDB.4.0;" conn.open server.mappath("datos/mis-mibros.mdb") consulta = "SELECT [libros].id, [libros].titulo, [libros].autor FROM libros" set rs = Conn.Execute(consulta) rs.MoveFirst() response.write("<coleccion>") while (not rs.EOF) response.write("<libro>") response.write("<id>" & rs("id") & "</id>") response.Write vbCrLf response.write("<titulo>" & rs("titulo") & "</titulo>") response.Write vbCrLf response.write("<autor>" & rs("autor") & "</autor>") response.Write vbCrLf response.write("</libro>") rs.MoveNext() wend rs.close() conn.close() response.write("</coleccion>") %>
Después de ejecutar este código se podría mostrar algo como esto:
<coleccion> <libro> <id>123-AAA</id> <isbn>titulo abc</isbn> <autor>autor A</autor> </libro> <libro> <id>222-QWERT</id> <isbn>titulo sss</isbn> <autor>autor B</autor> </libro> <libro> <id>333-RTC</id> <isbn>titulo def</isbn> <autor>autor C</autor> </libro> </coleccion>
Para hacer pruebas en local, sin necesidad de tener el servidor Microsoft IIS, recomiendo utilizar Baby server (http://www.pablosoftwaresolutions.com/html/baby_web_server.html).

Se trata de una alternativa gratuita y muy ligera. Por defecto tiene configurado como puerto de escucha el puerto 80, para evitar conflictos entre Apache y Skype, tuve que cambiarlo al 8080.