bobo的专栏

WEB开发

RssReader

// Copyright (c) 2006 Robin Schuil (http://lunchpauze.blogspot.com, http://www.sayoutloud.com)
//
// Permission is hereby granted, free of charge, to any person obtaining
// a copy of this software and associated documentation files (the
// "Software"), to deal in the Software without restriction, including
// without limitation the rights to use, copy, modify, merge, publish,
// distribute, sublicense, and/or sell copies of the Software, and to
// permit persons to whom the Software is furnished to do so, subject to
// the following conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
// MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE
// LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION
// OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION
// WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
//
// VERSION 0.1

Ajax.RssReader = Class.create();
Ajax.RssReader.prototype = Object.extend(new Ajax.Request(), {
 
 initialize : function( url, options ) {
  
  options = options || {};
  
  this.setOptions(options);
  
  this.items = {};

  var onSuccess = this.options.onSuccess || Prototype.emptyFunction;
  var onFailure = this.options.onFailure || Prototype.emptyFunction;
  
  this.options.onSuccess = (function(t) { if( this.onSuccess(t) ) { onSuccess(this); } else { this.onFailure(t); onFailure(this); } }).bind(this);
  this.options.onFailure = (function(t) { this.onFailure(t); onFailure(this); }).bind(this);
  
  this.request( url );

 },
 
 onSuccess : function( t ) {
  
  try {
   var node = t.responseXML;
   var xmlChannel = node.getElementsByTagName('channel').item(0); 
  }
  catch(e) {
   return false;
  }
  
  this.channel = {
   title:      this._getElementValue(xmlChannel, 'title'),
   link:      this._getElementValue(xmlChannel, 'link'),
   description:  this._getElementValue(xmlChannel, 'description'),
   language:    this._getElementValue(xmlChannel, 'language'),
   copyright:   this._getElementValue(xmlChannel, 'copyright'),
   managingEditor: this._getElementValue(xmlChannel, 'managingEditor'),
   webMaster:   this._getElementValue(xmlChannel, 'webMaster'),
   pubDate:    this._getElementValue(xmlChannel, 'pubDate'),
   lastBuildDate: this._getElementValue(xmlChannel, 'lastBuildDate')
  };
  
  this.items = new Array();
  
  var xmlItems = xmlChannel.getElementsByTagName('item');

  for (var n=0; n<xmlItems.length; n++) {
   
   var xmlItem = xmlItems[n];
   
   var item = {
    title:    this._getElementValue(xmlItem, 'title'),
    link:     this._getElementValue(xmlItem, 'link'),
    description: this._getElementValue(xmlItem, 'description'),
    author:    this._getElementValue(xmlItem, 'author'),
    category:   this._getElementValue(xmlItem, 'category'),
    comments:   this._getElementValue(xmlItem, 'comments'),
    guid:     this._getElementValue(xmlItem, 'guid'),
    pubDate:   this._getElementValue(xmlItem, 'pubDate')
   };
   
   this.items.push( item );
         
  }
  
  return true;
    
 },
 
 onFailure : function( t ) {
  
 },
 
 _getElementValue : function( node, elementName ) {
  
  try {
   var value = node.getElementsByTagName(elementName).item(0).firstChild.data; 
  }
  catch(e) {
   var value = '';
  }
  
  return value;
  
 }
 
});

//应用

function myCallback( rss ) {
    alert(rss.channel.title);
    for(var n=0; n<rss.items.length; n++) {
        alert(rss.items[n].title);
    }
}

function errorHandler( rss ) {
   alert('An error has occured');
}

new Ajax.RssReader( 'test.xml', { onSuccess: myCallback, onFailure: errorHandler } );

阅读更多
上一篇线程实例二
下一篇 40种网页常用小技巧(javascript)
想对作者说点什么? 我来说一句

RSSReader_Java

2014年11月08日 13.98MB 下载

RSSReader 阅读器C#源代码

2010年05月21日 1.55MB 下载

RssReader小程序

2009年09月16日 208KB 下载

RssReader项目设计

2009年12月21日 8.44MB 下载

J2ME平台的RSSReader

2011年05月11日 932KB 下载

rssReader 阅读器 C#版

2010年08月21日 475KB 下载

RSSReader新闻阅读器

2010年12月19日 1.72MB 下载

RssReader 阅读器

2010年01月13日 128KB 下载

struts2+spring2+hibernate3 RSSREADER

2011年10月28日 46KB 下载

没有更多推荐了,返回首页

关闭
关闭