CFLib.org – Common Function Library Project

cfRssFeed(feedURL [, amount])

Last updated November 20, 2008

Version: 2 | Requires: ColdFusion MX | Library: StrLib

 
Rated 2 time(s). Average Rating: 5.0

Description:
This UDF display's a rss feed to a web browser, in a readable format.

Return Values:
Returns a query.

Example:

view plain print about
<cfinclude template="rssfeedUdf.cfm">

<cfset rssFeed = cfRssFeed("http://news.bbc.co.uk/rss/newsonline_uk_edition/front_page/rss.xml")>

<font face="arial" size="2">
<ul>
<cfoutput query="rssFeed">
  <li><b><a href="#link#">#title#</a></b> - #description#</li><br>
</cfoutput>
</ul>
</font>

Parameters:

Name Description Required
feedURL RSS URL. Yes
amount Restricts the amount of items returned. Defaults to number of items in the feed. No

Full UDF Source:

view plain print about
<!---
 Display rss feed.
 Changes by Raymond Camden and Steven (v2 support amount)
 
 @param feedURL      RSS URL. (Required)
 @param amount      Restricts the amount of items returned. Defaults to number of items in the feed. (Optional)
 @return Returns a query. 
 @author Jose Diaz-Salcedo (bleachedbug@gmail.com) 
 @version 2, November 20, 2008 
--->

<cffunction name="cfRssFeed" access="public" returntype="query" output=false>
    <cfargument name="feedUrl" type="string" required="true"/>
    <cfset var news_file = arguments.feedurl>
    <cfset var rss = "">
    <cfset var items = "">
    <cfset var rssItems = "">
    <cfset var i = "">
    <cfset var row = "">
    <cfset var title = "">
    <cfset var link = "">
    
    <cfhttp url="#news_file#" method="get" />
    
    <cfset rss = xmlParse(cfhttp.filecontent)>

    <cfset items = xmlSearch(rss, "/rss/channel/item")>
    <cfset rssItems = queryNew("title,description,link")>

    <cfloop from="1" to="#ArrayLen(items)#" index="i">
        <cfset row = queryAddRow(rssItems)>
        <cfset title = xmlSearch(rss, "/rss/channel/item[#i#]/title")>

        <cfif arrayLen(title)>
            <cfset title = title[1].xmlText>
        <cfelse>
            <cfset title="">
        </cfif>

        <cfset description = XMLSearch(items[i], "/rss/channel/item[#i#]/description")>

        <cfif ArrayLen(description)>
            <cfset description = description[1].xmlText>
        <cfelse>
            <cfset description="">
        </cfif>

        <cfset link = xmlSearch(items[i], "/rss/channel/item[#i#]/link")>

        <cfif arrayLen(link)>
            <cfset link = link[1].xmlText>
        <cfelse>
            <cfset link="">
        </cfif>

        <cfset querySetCell(rssItems, "title", title, row)>
        <cfset querySetCell(rssItems, "description", description, row)>
        <cfset querySetCell(rssItems, "link", link, row)>

    </cfloop>

    <cfreturn rssItems />

</cffunction>
blog comments powered by Disqus

Search CFLib.org


Latest Additions

Tayo Akinmade Tayo Akinmade added
arrayTrim
3 day(s) ago

Will Belden Will Belden added
longTime
9 day(s) ago

James Sleeman James Sleeman added
quickSort
19 day(s) ago

Ben Forta Ben Forta added
GetHostAddress
22 day(s) ago

Top Rated

Darwan Leonardo Sitepu EksporSQLData
Rated 5.0, 16 time(s)

Darwan Leonardo Sitepu backupDatabase
Rated 5.0, 13 time(s)

Barney Boisvert indentXml
Rated 5.0, 10 time(s)

Kevin Pepperman generateSsccAsn
Rated 5.0, 4 time(s)

Created by Raymond Camden / Design by Justin Johnson