Ver Mensaje Individual
  #3 (permalink)  
Antiguo 02/07/2010, 11:50
snomar
 
Fecha de Ingreso: septiembre-2005
Mensajes: 20
Antigüedad: 18 años, 7 meses
Puntos: 0
Respuesta: ASP que genere XML a partir de consulta SQL

Primero de todo, el archivo rss.asp tienes que guardarlo en formato UTF-8, guardar como y fijate bien (la mayoria de editores tiene esta opcion).


la cabecera del documento fija:

Código:
<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
seguimos:

empieza el asp propiamente

Código:
<%
Response.ContentType="text/xml"

'=====================================================
' limpio caracteres raros no aceptados en xml
function limpio(str)
str=replace(str,"' ","'")
str=replace(str,"’","'")
str=replace(str,"`","'")
str=replace(str,"’","'")
str=replace(str,"´","'")
str=replace(str,"'","'")
limpio = str
end function
'=====================================================
' fechas hay que ponerlas en el formato xml, si no es el caso no hace falta
'*****************************************************************
function AbbrDia(numDia)
     select case numDia
         case 2
             AbbrDia = "Mon"
         case 3
             AbbrDia = "Tue"
         case 4
             AbbrDia = "Wed"
         case 5
             AbbrDia = "Thu"
         case 6
             AbbrDia = "Fri"
         case 7
             AbbrDia = "Sat"
         case 1
             AbbrDia = "Sun"
     end select 
end function
function AbbrMes(numMes)
     select case numMes
         case 1
             AbbrMes = "Jan"
         case 2
             AbbrMes = "Feb"
         case 3
             AbbrMes = "Mar"
         case 4
             AbbrMes = "Apr"
         case 5
             AbbrMes = "May"
         case 6
             AbbrMes = "Jun"
         case 7
             AbbrMes = "Jul"
         case 8
             AbbrMes = "Aug"
         case 9
             AbbrMes = "Sep"
         case 10
             AbbrMes = "Oct"
         case 11
             AbbrMes = "Nov"
         case 12
             AbbrMes = "Dec"
     end select 
end function
function CeroDelante(str)
     if len(str) = 1 then
         CeroDelante = "0" & str
     else
         CeroDelante = str
     end if
end function

function FormatoRFC822(fecha)
     dim fechaRFC
     fechaRFC = AbbrDia(DatePart("w", fecha)) & ", " _
         & CeroDelante(DatePart("d", fecha))
     fechaRFC = fechaRFC & _
         " " & AbbrMes(DatePart("m", fecha)) & " " & _
         DatePart("yyyy", fecha) & _
         " " & CeroDelante(DatePart("h", fecha))
     fechaRFC = fechaRFC & ":" & CeroDelante(DatePart("n", fecha)) & ":" & CeroDelante(DatePart("s", fecha)) 
     FormatoRFC822 = fechaRFC
end function
'================================================
sitio=("nombretusitio")
direccionweb=("ladireccionwebhttp")
direccionrss=("ladireccionwebrss")
%>
	<channel>
		<%response.write ("<title>")&sitio&("</title>")%>
		<description>Noticias.</description>
		<link>")&direccionweb&("</link>
		<atom:link href="http://www.tusitio.com/rss/rss.asp" rel="self" type="application/rss+xml"  />
		<generator>tusitio CMS </generator>
		<language>es</language>
<%
'**************************************************************************************
'Creamos la conexión con la Base de Datos
set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open ("Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("../fpdb/noticias.mdb"))
SQL="SELECT TOP 5 id, fecha, hora, titulo, subtitulo, dato FROM noticias ORDER BY id DESC"
'Ejecutamos la consulta
set rs=oConn.Execute(SQL)
'Vamos al primer registro
rs.MoveFirst
'Montamos el bucle
do while not rs.eof
 subtitulo=rs("subtitulo")
 fechaMAL= CDate(rs("fecha"))
 fechaMal2=WeekDayName(WeekDay(fechaMAL))& ", " & Day(fechaMAL) & " " & MonthName(Month(fechaMAL))& ", " & Year(fechaMAL)
 fechaBIEN=FormatoRFC822(fechaMAL)
 hora=rs("hora")
 titulo=rs("titulo")
			neteja1=instr(titulo,">")
			titulo=mid(titulo,neteja1+1)
 id=rs("id")
 subtitulo=limpio(subtitulo)
 'Mostramos los primeros 200 caracteres de la noticia
 if len(rs("subtitulo"))>200 then
  noticia=replace(left(rs("subtitulo"),200) & "...",vbCrLf,"<br />")
 else
  noticia=replace(rs("subtitulo"),vbCrLf,"<br />")
 end if
 noticia=limpio(noticia)
 'escribimos el nodo XML
%>		
		
		<item>
			<title><%=titulo%></title>
			<link>http://www.tusitio.com/default_noticias.asp?opcion=not&amp;pg=1&amp;menu=menu1&amp;idN=<%=rs("id") %>&amp;idioma=1&amp;pagina=lanoticia&amp;AA=LEER</link>
			<guid>http://www.tusitio.com/default_noticias.asp?opcion=not&amp;pg=1&amp;menu=menu1&amp;idN=<%=rs("id") %>&amp;idioma=1&amp;pagina=lanoticia&amp;AA=LEER</guid>
			<description><![CDATA[<%=subtitulo%>]]></description>
			<category>Prensa Noticias</category>
			<pubDate><%=fechaBIEN%> +0000</pubDate>
		</item>
		
<%
'nos movemos al siguiente registro
rs.MoveNext
loop
'Cerramos y limpiamos los objetos
rs.Close
oConn.Close
set rs=nothing
set oConn=nothing
'*****************************************************
%>
</channel></rss>
no es muy depurado pero me funciona ...