miércoles, agosto 23, 2006

RSS Feed y Coldfusion

El otro dia tenia que incluir unas noticias RSS en una web.

Parece fácil pero al seguir otros tutoriales en la web me encontré con unos de problemas.

1. Primero tenia que mirar el "character set" del XML que iba a leer y ponerlo en el tag CFHTTP. En este caso use utf-8 pero puede cambiar dependiendo del idioma.

2. Algunos RSS estan malformados y tienes que quitar el primer caracter porque sino te da un error "Document root element is missing". Esto siendo mi caso tenia que añadir la linea
(algunos como RSS Yahoo funcionan perfectamente y sobra esta linea)

3. En otros tutoriales he visto que el codigo para leer el XML es objRSS.channel.item pero en mi caso yo tuvé que añadir XMLRoot. (objRSS.XMLRoot.channel.item)

Al final decidi usar el "schedule" de Coldfusion y llamar este codigo una vez al dia a las 5 de la mañana y copiar este código a un archivo .htm y despues incluir esto en la página. Asi evitar llamadas CFHTTP cada vez que alguien vea la web.

Abajo esta el codigo

<cfset html="">
<cfhttp method="get" url="http://www.menafn.com/rss/menafn_UAE.xml" charset="utf-8"></cfhttp>
<cfset xml= RemoveChars(cfhttp.filecontent,1,1)>
<cfset objrss= xmlParse(xml)>
<cfset numberofnewsitems= arraylen(objRSS.XMLRoot.channel.item)>
<cfloop from="1" to="#NumberOfNewsItems#" index="ind">
<cfset headlinetoadd='<A" href="http://www.noticiasweb.es/#objRSS.XMLRoot.channel.item[ind].link.xmltext#" target="_blank">#objRSS.XMLRoot.channel.item[ind].title.xmltext#</A>'>
<cfset html= HTML & HeadlineToAdd>
</CFLOOP>
<cffile action="WRITE" file="C:\inetpub\wwwroot\miweb.com\rssfeed.htm" output="#HTML#">

1 comentario:

Saiful Alam dijo...
Este comentario ha sido eliminado por un administrador del blog.