IBM Developers work has a tutorial on how to build an RSS reader using AJAX. The amount of code you need to write is scary (and this is not the complete code). Adobe Flex 2 plus a simple Java programming to support DB interaction allows you to achive the same functionality using A LOT LESS coding.Just take a look at this screen:
The Flex 2 code below populates the bottom portion of the screen with financial news based on the selected stock on top ( (it does not work with a DB to store the RSS source so it’d add some 50 lines of Java code ). The data come from the Yahoo! Finance RSS feed. The URL looks as follows: http://finance.yahoo.com/rss/headline?s=MSFT
The suffix can be MSFT or whatever is selected on top is being passed to the code below.
Flex lt;mx:HTTPService gt; object is used through a proxy deployed under Tomcat or any other servlet container.
The entire application code and its description can be found in this article.
lt;?xml version= “1.0 ” encoding= “utf-8 “? gt;
lt;mx:Panel xmlns:mx= “http://www.adobe.com/2006/mxml ”
title= “News ” width= “100% ” height= “100% ” gt;
lt;mx:DataGrid id= “newsGrid ” width= “100% ” height= “100% ”
dataProvider= “{newsFeed.lastResult.channel.item} ” variableRowHeight= “true ” gt;
lt;mx:columns gt;
lt;mx:DataGridColumn headerText= “Date ” dataField= “pubDate ” width= “200 “/ gt;
lt;mx:DataGridColumn headerText= “Title ” dataField= “title ” wordWrap= “true ” / gt;
lt;mx:DataGridColumn headerText= “Description ” dataField= “description ” wordWrap= “true ” / gt;
lt;mx:DataGridColumn headerText= “Link ” width= “130 ” gt;
lt;mx:itemRenderer gt;
lt;mx:Component gt;
lt;mx:LinkButton label= “{data.link} ” click= “navigateToURL(new URLRequest(data.link), ‘_blank’) “/ gt;
lt;/mx:Component gt;
lt;/mx:itemRenderer gt;
lt;/mx:DataGridColumn gt;
lt;/mx:columns gt;
lt;/mx:DataGrid gt;
lt;mx:HTTPService id= “newsFeed ” useProxy= “true ”
destination= “YahooFinancialNews ” concurrency= “last ”
resultFormat= “e4x ” fault= “onFault(event) ” gt;
lt;/mx:HTTPService gt;
lt;mx:Script gt;
lt;![CDATA[
import mx.utils.ObjectProxy;
import mx.rpc.events.*;
public function set security(value:String):void {
this.title = “News: ” + value;
newsFeed.send({s:value});
}
private function onFault(event:FaultEvent):void {
mx.controls.Alert.show
(
“Destination: ” + event.currentTarget.destination + “\n ” +
“Fault code: ” + event.fault.faultCode + “\n ” +
“Detail: ” + event.fault.faultDetail, “News feed failure ”
);
}
]] gt;
lt;/mx:Script gt;
lt;/mx:Panel gt;