02/07/2010, 11:50
|
| | Fecha de Ingreso: septiembre-2005
Mensajes: 20
Antigüedad: 19 años, 3 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&pg=1&menu=menu1&idN=<%=rs("id") %>&idioma=1&pagina=lanoticia&AA=LEER</link>
<guid>http://www.tusitio.com/default_noticias.asp?opcion=not&pg=1&menu=menu1&idN=<%=rs("id") %>&idioma=1&pagina=lanoticia&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 ... |