因为最近在项目中用到了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 };
分享到:
相关推荐
在本文中,我们将深入探讨如何使用JavaScript解析RSS(Really Simple Syndication) feed,这是一种常见的数据格式,用于发布新闻提要、博客更新和其他定期发布的内容。RSS订阅允许用户获取网站的最新内容而无需直接...
本实例将介绍如何使用JavaScript来解析RSS源,以便在网页上展示这些内容。 首先,我们需要理解RSS的结构。RSS文件通常为XML格式,包含一系列频道(channel)元素,每个频道下有多个条目(item)元素。每个条目包含...
FeedEk 是个 jQuery 插件,解析和显示 RSS 和 Atom 订阅。FeedEk 使用 Google Feed API 来检索订阅。用户可以很方便的从任意的 domain 中获取订阅,不需要服务器端脚本。在线演示 标签:FeedEk
**jQuery插件解析RSS2.0规范:基于jFeed** RSS(Really Simple Syndication)是一种用于发布和聚合网络内容的XML格式,版本2.0是其最广泛采用的标准。RSS2.0规范允许网站创建可订阅的新闻源,使得用户可以通过RSS...
这可能包括使用Node.js的HTTP服务器、处理XML数据、解析RSS feed、定时任务调度等。 在文件名 "Juejin2RSS-master" 中,我们可以推测这是一个开源项目,可能包含一个主文件夹,用于存放所有实现这一功能的源代码、...
安装npm install --save rss-parser用法您可以从URL( parser.parseURL )或XML字符串( parser.parseString )解析RSS。 回调和Promises均受支持。节点JS 这是NodeJS中将Promises与async / await结合使用的示例: ...
节点解析RSS 一个快速的 node.js RSS 提要解析器。 原始的追求离子: 锯堆栈溢出这个问题,并决定它值得了Swift的回答。自己试试访问: : DIY 将此 repo 克隆/复制到您的本地计算机: git clone ...
JavaScript编写的RSS阅读器是一种基于Web的工具,它利用JavaScript语言和相关技术来解析和展示RSS(Really Simple Syndication)源。RSS是一种XML格式的数据,用于发布新闻、博客和其他在线内容,使得用户无需访问每...
在"bilibili2RSS-master"项目中,可能还涉及到了一些其他技术,例如Node.js(JavaScript的服务器端运行环境)和Express(用于构建Web应用的框架),它们可以帮助开发者搭建一个简单的服务器,接收用户请求并提供RSS...
在C#中实现RSS,你可以利用.NET Framework提供的类库来创建和解析RSS feed。本教程将引导你理解RSS的基本概念,并教你如何使用C#编写一个简单的RSS阅读器或生成器。 1. **RSS基础知识** - RSS是一种XML数据格式,...
1. **解析RSS Feed**:首先,你需要解析RSS源的XML数据。这通常通过使用XML解析库或API来实现,例如JavaScript中的DOMParser或者Python的ElementTree库。 2. **获取RSS源**:用户输入RSS URL或者通过搜索功能找到...
RSS阅读器的任务就是解析这些XML数据并以用户友好的方式呈现。 1. **设置HTML结构** 创建一个基本的HTML页面布局,包括一个用于显示RSS内容的容器,例如一个`<div>`元素。可以添加其他UI元素,如搜索框、分页等,...
5. **RSS解析**:JavaScript需要解析RSS源的XML结构,提取出需要的信息。这通常涉及到DOM解析或者使用第三方库如xml2js来简化处理。解析后的数据会被转化为JavaScript对象,然后用于更新HTML元素。 6. **用户界面...
1. Python的feedparser库:Python中可以使用feedparser库解析RSS Feed,获取内容信息。 2. Django框架的Feeds应用:Django提供内置的feeds应用,方便快速构建RSS Feed生成器。 3. Flask-RSS扩展:Flask微框架也有...
【标题】"Atom-feedme" 是一个用于解析RSS、Atom以及JSON提要的JavaScript库,其核心在于"feedme.js"。它旨在帮助开发者轻松处理各种格式的新闻提要,以便在网页应用或其他JavaScript环境中集成和展示来自不同来源的...
本篇将详细介绍如何使用JavaScript读取RSS数据,包括必要的准备工作、解析XML文档的方法以及如何处理这些数据并在网页上显示它们。 #### 基础概念 1. **RSS**:RSS是一种XML格式的数据文件,用于发布和聚合新闻...
微服务,用于解析rss提要并返回给定提要的JSON表示形式。 它使用从npm安装的不同解析。 当解析器失败时,它将按以下顺序尝试下一个: , , , 。 要指定特定的解析器,请参见下面的示例查询。 安装 npm i -g ...
在实际应用中,Atom-urss或Ultra-RSS这样的RSS解析器可以与各种Ruby项目结合,比如构建一个自动抓取和更新博客文章的后台服务,或者创建一个实时监控新闻动态的应用程序。对于Ruby开发者来说,了解和掌握这样的库是...
标题中的“alexa.rss.hugtech.io.blog:解析https”指的是一个可能的项目或教程,专注于使用JavaScript解析RSS feed(一种XML格式的数据源),特别是从URL "alexa.rss.hugtech.io.blog"获取数据,并且可能涉及通过...
1. 后端开发:可使用Python的feedparser库解析RSS源,Java的rome库或PHP的SimplePie等。数据库选择MySQL、PostgreSQL等,存储新闻数据。 2. 前端开发:HTML、CSS构建页面结构和样式,JavaScript进行交互逻辑,如AJAX...