`
ferreousbox
  • 浏览: 287524 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

js解析RSS

    博客分类:
  • AJAX
阅读更多
    因为最近在项目中用到了RSS频道,所以今天就花了点时间写了一个JS来解析RSS频道的类,说白了就是JS解析XML文件而已,呵呵.我的这个JS类提供解析XML返回JSON对象,便于操作结果集.目前只支持RSS2.0规范的解析,不过我这个JS类也很简单的,只获取title和link字段,其他的就不管了,呵呵,所以对RSS1.0和RSS0.9规范应该都是可以支持的,以后再有时间完善吧.另外,本来是想在web页面上直接访问RSS频道地址来的,可忘记了AJAX是不允许跨域访问的,所以也就只能在后台写一程序去获取RSS的内容,然后生成在本地磁盘上,最后web页面直接访问本地的XML文件了.

RssReader的源码:

01 /** 
02 * @title:Rss频道的读取与解析类. 
03 * @author:铁木箱子 
04 * @modify:2008-1-8 
05 */ 
06 
07 function RssReader(){}; 
08 RssReader.prototype= { 
09     /** 
10      * 获取RSS并解析.该方法是综合了getRss和parseXmlToJSON两个方法,最终的回调函数的值为json对象. 
11      */ 
12     getAndParse : function(/*string*/_url, /*function*/callback) { 
13         var parseXml = this.parseRss; 
14         this.getRss(_url, function(rssXml) { 
15             var json = parseXml(rssXml); 
16             callback(json); 
17         }); 
18     }, 
19      
20     /** 
21      * 获取rss频道的xml文件内容,以xml对象返回. 
22      * @param _url 要获取的RSS的URL地址 
23      * @param callback 获取成功或失败后的回调方法,参数为RSS内容的XML对象(失败则返回null) 
24      */ 
25     getRss : function(/*string*/ _url, /*function*/callback) { 
26         new Ajax.Request( 
27             _url, 
28             { 
29                 method : 'GET', 
30                 onComplete : function(xmlHttp) { 
31                     var rssXml = xmlHttp.responseXML; 
32                     if (rssXml == null) alert('非法的RSS频道内容,无法解析!'); 
33                     callback(rssXml); 
34                 } 
35             } 
36         ); 
37     }, 
38      
39     /** 
40      * 将RSS频道的XML内容转换成JSON对象返回. 
41      */ 
42     parseRss : function(/*object*/rssXml) { 
43         try { 
44             var rss = rssXml.getElementsByTagName('rss'); 
45             var channel = rssXml.getElementsByTagName('channel'); 
46             if (!rss || !channel || rss.length != 1 || channel.length < 1) { 
47                 alert('无效的RSS格式:没有rss节点和channel节点!'); 
48                 return null; 
49             } 
50             var version = rss.item(0).getAttribute('version'); 
51             if (!version) { 
52                 alert('无效的RSS格式:没有指定RSS版本号!'); 
53                 return null; 
54             } 
55             if (version == '2.0') return RssReader.parseRss2_0(channel.item(0)); 
56              
57             alert('无效的RSS格式:无法确定RSS版本!'); 
58             return null; 
59         } catch (ex) { 
60             alert('解析RSS内容时发生错误:' + ex.message); 
61             return null; 
62         } 
63     } 
64 }; 
65 
66 /** 
67 * Rss2.0格式的静态解析方法,返回结果为JSON对象. 
68 * 返回的JSON格式为: 
69 * {"items" : [ {"title" : "标题", "link" : "连接地址"}, 
70 *             {"title" : "标题", "link" : "连接地址"}, 
71 *             {"title" : "标题", "link" : "连接地址"} 
72 *            ] 
73 * } 
74 * 使用方法为(假设最终返回的对象名称为json): 
75 * json.items.length - 获取总的信息的条数 
76 * json.items[i] - 获取每一条信息的对象(其中0<=i<json.items.length) 
77 * json.items[i].title - 获取单条信息的标题文字 
78 * json.items[i].link - 获取单条信息的连接地址 
79 */ 
80 RssReader.parseRss2_0 = function(/*object*/channel) { 
81     var items = channel.getElementsByTagName('item'); 
82     var json = '{"items":['; 
83     for (var i = 0; i < items.length; i ++) { 
84         var item = items.item(i); 
85         var _title = item.getElementsByTagName('title')[0]; 
86         var _link = item.getElementsByTagName('link')[0]; 
87         if (!_title.hasChildNodes() || !_link.hasChildNodes()) continue; 
88         json += '{"title":"' + _title.firstChild.nodeValue.gsub(/"/,"'") + '",'; 
89         json += '"link":"' + _link.firstChild.nodeValue.gsub(/"/,"'") + '"}'; 
90         if (i < items.length - 1) json += ','; 
91     } 
92     json += ']}'; 
93     //alert(json); 
94     return eval('(' + json + ')'); 
95 };

分享到:
评论
1 楼 cwftalus 2010-06-03  
这个怎么用呢

相关推荐

    javascript 解析 rss 实例

    在本文中,我们将深入探讨如何使用JavaScript解析RSS(Really Simple Syndication) feed,这是一种常见的数据格式,用于发布新闻提要、博客更新和其他定期发布的内容。RSS订阅允许用户获取网站的最新内容而无需直接...

    js JavaScript 解析 rss 实例

    本实例将介绍如何使用JavaScript来解析RSS源,以便在网页上展示这些内容。 首先,我们需要理解RSS的结构。RSS文件通常为XML格式,包含一系列频道(channel)元素,每个频道下有多个条目(item)元素。每个条目包含...

    jQuery解析和显示RSS订阅插件FeedEk.zip

    FeedEk 是个 jQuery 插件,解析和显示 RSS 和 Atom 订阅。FeedEk 使用 Google Feed API 来检索订阅。用户可以很方便的从任意的 domain 中获取订阅,不需要服务器端脚本。在线演示 标签:FeedEk

    jQuery插件解析RSS20规范它是基于jFeed

    **jQuery插件解析RSS2.0规范:基于jFeed** RSS(Really Simple Syndication)是一种用于发布和聚合网络内容的XML格式,版本2.0是其最广泛采用的标准。RSS2.0规范允许网站创建可订阅的新闻源,使得用户可以通过RSS...

    Node.js-使用RSS分类订阅稀土掘金

    这可能包括使用Node.js的HTTP服务器、处理XML数据、解析RSS feed、定时任务调度等。 在文件名 "Juejin2RSS-master" 中,我们可以推测这是一个开源项目,可能包含一个主文件夹,用于存放所有实现这一功能的源代码、...

    rss-parser:一个轻量级的RSS解析器,用于Node和浏览器

    安装npm install --save rss-parser用法您可以从URL( parser.parseURL )或XML字符串( parser.parseString )解析RSS。 回调和Promises均受支持。节点JS 这是NodeJS中将Promises与async / await结合使用的示例: ...

    node-parse-rss:一个快速的 node.js RSS 提要解析器

    节点解析RSS 一个快速的 node.js RSS 提要解析器。 原始的追求离子: 锯堆栈溢出这个问题,并决定它值得了Swift的回答。自己试试访问: : DIY 将此 repo 克隆/复制到您的本地计算机: git clone ...

    JavaScript编写的RSS阅读器

    JavaScript编写的RSS阅读器是一种基于Web的工具,它利用JavaScript语言和相关技术来解析和展示RSS(Really Simple Syndication)源。RSS是一种XML格式的数据,用于发布新闻、博客和其他在线内容,使得用户无需访问每...

    使用RSS订阅喜欢的bilibiliup主和番剧

    在"bilibili2RSS-master"项目中,可能还涉及到了一些其他技术,例如Node.js(JavaScript的服务器端运行环境)和Express(用于构建Web应用的框架),它们可以帮助开发者搭建一个简单的服务器,接收用户请求并提供RSS...

    简单的rss实现(C#)

    在C#中实现RSS,你可以利用.NET Framework提供的类库来创建和解析RSS feed。本教程将引导你理解RSS的基本概念,并教你如何使用C#编写一个简单的RSS阅读器或生成器。 1. **RSS基础知识** - RSS是一种XML数据格式,...

    Rss阅读器简单例子

    1. **解析RSS Feed**:首先,你需要解析RSS源的XML数据。这通常通过使用XML解析库或API来实现,例如JavaScript中的DOMParser或者Python的ElementTree库。 2. **获取RSS源**:用户输入RSS URL或者通过搜索功能找到...

    jQuery AJAX实现的RSS阅读器

    RSS阅读器的任务就是解析这些XML数据并以用户友好的方式呈现。 1. **设置HTML结构** 创建一个基本的HTML页面布局,包括一个用于显示RSS内容的容器,例如一个`&lt;div&gt;`元素。可以添加其他UI元素,如搜索框、分页等,...

    HTML版Rss

    5. **RSS解析**:JavaScript需要解析RSS源的XML结构,提取出需要的信息。这通常涉及到DOM解析或者使用第三方库如xml2js来简化处理。解析后的数据会被转化为JavaScript对象,然后用于更新HTML元素。 6. **用户界面...

    RSS模块实现(网站在线订阅)

    1. Python的feedparser库:Python中可以使用feedparser库解析RSS Feed,获取内容信息。 2. Django框架的Feeds应用:Django提供内置的feeds应用,方便快速构建RSS Feed生成器。 3. Flask-RSS扩展:Flask微框架也有...

    Atom-feedme,rss/atom/json提要解析器。通过在github上创建一个帐户,为fent/feedme.js的开发做出贡献。.zip

    【标题】"Atom-feedme" 是一个用于解析RSS、Atom以及JSON提要的JavaScript库,其核心在于"feedme.js"。它旨在帮助开发者轻松处理各种格式的新闻提要,以便在网页应用或其他JavaScript环境中集成和展示来自不同来源的...

    javascript读取RSS数据

    本篇将详细介绍如何使用JavaScript读取RSS数据,包括必要的准备工作、解析XML文档的方法以及如何处理这些数据并在网页上显示它们。 #### 基础概念 1. **RSS**:RSS是一种XML格式的数据文件,用于发布和聚合新闻...

    graphql-rss-parser:解析rss feed并将其作为grahpql服务提供的微服务

    微服务,用于解析rss提要并返回给定提要的JSON表示形式。 它使用从npm安装的不同解析。 当解析器失败时,它将按以下顺序尝试下一个: , , , 。 要指定特定的解析器,请参见下面的示例查询。 安装 npm i -g ...

    Atom-urss,ultra-rss是另一个ruby提要rss解析器。通过在github上创建一个帐户来帮助zedtux/urss开发。.zip

    在实际应用中,Atom-urss或Ultra-RSS这样的RSS解析器可以与各种Ruby项目结合,比如构建一个自动抓取和更新博客文章的后台服务,或者创建一个实时监控新闻动态的应用程序。对于Ruby开发者来说,了解和掌握这样的库是...

    alexa.rss.hugtech.io.blog:解析https

    标题中的“alexa.rss.hugtech.io.blog:解析https”指的是一个可能的项目或教程,专注于使用JavaScript解析RSS feed(一种XML格式的数据源),特别是从URL "alexa.rss.hugtech.io.blog"获取数据,并且可能涉及通过...

    RSS获取新闻并发布

    1. 后端开发:可使用Python的feedparser库解析RSS源,Java的rome库或PHP的SimplePie等。数据库选择MySQL、PostgreSQL等,存储新闻数据。 2. 前端开发:HTML、CSS构建页面结构和样式,JavaScript进行交互逻辑,如AJAX...

Global site tag (gtag.js) - Google Analytics