1
/* jFeed : jQuery feed parser plugin
2
* Copyright (C) 2007 Jean-François Hovinne - http://www.hovinne.com/
3
* Dual licensed under the MIT (MIT-license.txt)
4
* and GPL (GPL-license.txt) licenses.
7
jQuery.getFeed = function(options) {
9
options = jQuery.extend({
24
if (jQuery.isFunction(options.failure) && jQuery.type(options.error)==='null') {
25
// Handle legacy failure option
26
options.error = function(xhr, msg, e){
27
options.failure(msg, e);
29
} else if (jQuery.type(options.failure) === jQuery.type(options.error) === 'null') {
30
// Default error behavior if failure & error both unspecified
31
options.error = function(xhr, msg, e){
32
window.console&&console.log('getFeed failed to load feed', xhr, msg, e);
41
dataType: (jQuery.browser.msie) ? "text" : options.dataType,
42
success: function(xml) {
43
var feed = new JFeed(xml);
44
if (jQuery.isFunction(options.success)) options.success(feed);
47
global: options.global
53
if (xml) this.parse(xml);
64
parse: function(xml) {
66
if (jQuery.browser.msie) {
67
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
72
if (jQuery('channel', xml).length == 1) {
75
var feedClass = new JRss(xml);
77
} else if (jQuery('feed', xml).length == 1) {
80
var feedClass = new JAtom(xml);
83
if (feedClass) jQuery.extend(this, feedClass);
87
function JFeedItem() {};
89
JFeedItem.prototype = {
104
_parse: function(xml) {
106
var channel = jQuery('feed', xml).eq(0);
108
this.version = '1.0';
109
this.title = jQuery(channel).find('title:first').text();
110
this.link = jQuery(channel).find('link:first').attr('href');
111
this.description = jQuery(channel).find('subtitle:first').text();
112
this.language = jQuery(channel).attr('xml:lang');
113
this.updated = jQuery(channel).find('updated:first').text();
115
this.items = new Array();
119
jQuery('entry', xml).each( function() {
121
var item = new JFeedItem();
123
item.title = jQuery(this).find('title').eq(0).text();
124
item.link = jQuery(this).find('link').eq(0).attr('href');
125
item.description = jQuery(this).find('content').eq(0).text();
126
item.updated = jQuery(this).find('updated').eq(0).text();
127
item.id = jQuery(this).find('id').eq(0).text();
129
feed.items.push(item);
140
_parse: function(xml) {
142
if(jQuery('rss', xml).length == 0) this.version = '1.0';
143
else this.version = jQuery('rss', xml).eq(0).attr('version');
145
var channel = jQuery('channel', xml).eq(0);
147
this.title = jQuery(channel).find('title:first').text();
148
this.link = jQuery(channel).find('link:first').text();
149
this.description = jQuery(channel).find('description:first').text();
150
this.language = jQuery(channel).find('language:first').text();
151
this.updated = jQuery(channel).find('lastBuildDate:first').text();
153
this.items = new Array();
157
jQuery('item', xml).each( function() {
159
var item = new JFeedItem();
161
item.title = jQuery(this).find('title').eq(0).text();
162
item.link = jQuery(this).find('link').eq(0).text();
163
item.description = jQuery(this).find('description').eq(0).text();
164
item.updated = jQuery(this).find('pubDate').eq(0).text();
165
item.id = jQuery(this).find('guid').eq(0).text();
167
feed.items.push(item);