基于.net技术的 Rss 订阅开发
RSS(Really Simple Syndication,真正简单的连锁)是一种 Web 内容连锁格式。RSS 成为通过 Web 连锁新闻内容的标准格式。刚好我现在vs的环境也是.net,因为在.NET3.5下,MS集成了RSS对象。这样一改变,就很大的方便了创建和读取RSS了。
首先搞了个Rss.aspx页面,在Page_Load方法里面显示让它以标准的xml格式输出
Response.Cache.SetNoStore();
Response.ContentType = "application/xml";
然后根据需要订阅的页面传过来的参数进行一番判断。把所有符合条件的资源都放在DataTable里面。
接着用MemoryStream对象对xml进行操作,就不多说了,看了代码就会明白,同时也给自己做个备忘。如下:
MemoryStream ms = new MemoryStream();
XmlTextWriter xmlTW = new XmlTextWriter(ms, Encoding.UTF8);
xmlTW.Formatting = Formatting.Indented;
xmlTW.WriteStartDocument();
xmlTW.WriteStartElement("rss");
xmlTW.WriteAttributeString("version", "2.0");
xmlTW.WriteStartElement("channel");
if (WebID == )
{
}
else
{
xmlTW.WriteElementString("title", "欢迎订阅"+WebDs.Tables[].Rows[]["Web_Name"].ToString()+">>"+ColumnDs.Tables[].Rows[]["ColumnName"].ToString());
xmlTW.WriteElementString("link", ColumnDs.Tables[].Rows[]["CoulumnUrl"].ToString());
xmlTW.WriteElementString("description", ""); } DataTable dt = ds.Tables[]; foreach (DataRow dr in dt.Rows)
{
xmlTW.WriteStartElement("item"); xmlTW.WriteElementString("title", dr["Article_Title"].ToString());
xmlTW.WriteElementString("link", GetNewsLink(dr));
xmlTW.WriteElementString("pubDate",string.Format("{0:R}",dr["CreateTime"]));
xmlTW.WriteElementString("author", dr["UserLogin_FullName"].ToString());
xmlTW.WriteElementString("description", Pub_Config.nohtml(Pub_Config.Substrin(dr["Article_Body"], ))); xmlTW.WriteEndElement(); } xmlTW.WriteEndElement();
xmlTW.WriteEndElement();
xmlTW.WriteEndDocument();
xmlTW.Flush();
byte[] buffer = ms.ToArray();
Response.Write(Encoding.UTF8.GetString(buffer));
Response.End();
xmlTW.Close();
ms.Close();
ms.Dispose();
要注意的是:
1.XML格式是大小写敏感的,这就意味着,XML元素的起始和终止标签必须匹配,拼写和大小写都必须一致。
2.RSS2.0的根元素是< rss>元素,这个元素可以有一个版本号的属性,例如:
< rssversion="2.0">
...
< /rss>
< rss>元素只有一个子元素< channel>,用来描述聚合的内容。在< channel>元素里面有三个必需的子元素,用来描述Web站点的信息。这三个元素是:
title—定义聚合文件的名称,一般来说,还会包括Web站点的名称;
link—Web站点的URL;
description—Web站点的一段简短的描述。
除此之外,还有一些可选元素来描述站点信息。这些元素的更多信息请参见RSS2.0规范。
每一个新闻项目放在一个单独的< item>元素中。< channel>元素可以有任意数量的< item>元素。每个< item>元素可以有多种的子元素,唯一的要求是最少必须包含< title>元素和< description>元素其中一个作为子元素。以下列出了一些相关的< item>子元素:
title—新闻项目的标题;
link—新闻项目的URL;
description—新闻项目的大纲;
author—新闻项目的作者;
pubDate—新闻项目的发布日期
3.< item>子元素尤其要注意的是pubDate的格式,RSS要求日期必须按照RFC822日期和时间规范进行格式化,此格式要求:开头是一个可选的3字母星期缩写加一个逗号,
接着必须是日加上3字母缩写的月份和年份,最后是一个带时区名的时间。
我们可以用Stirng.foemat()来转化如期格式,就如我上面那个例子。
最终结果
文章转自:http://www.cnblogs.com/Jahom/archive/2009/08/15/1546906.html
基于.net技术的 Rss 订阅开发的更多相关文章
- 基于 WebRTC 技术的实时通信服务开发实践
随着直播的发展,直播实时互动性变得日益重要.又拍云在 WebRTC 的基础上,凭借多年的开发经验,结合当下实际情况,开发 UPRTC 系统,解决了网络延时.并发量大.客户端解码能力差等问题. WebR ...
- 基于C#和Asp.NET MVC开发GPS部标监控平台
基于交通部796标准开发部标监控平台,选择开发语言和技术也是团队要思考的因素,其实这由团队自己擅长的技术来决定,如果擅长C#和Asp.NET, 当然开发效率就高很多.当然了技术选型一定要选用当前主流的 ...
- 基于C#和Asp.NET MVC开发GPS部标视频监控平台
基于C#和Asp.NET MVC开发GPS部标监控平台 目前整理了基于.NET技术的部标平台开发文章,可以参考: 1.部标Jt808协议模拟终端的设计和开发 2.C#版的808GPS服务器开发-> ...
- 基于SpringBoot从零构建博客网站 - 技术选型和整合开发环境
技术选型和整合开发环境 1.技术选型 博客网站是基于SpringBoot整合其它模块而开发的,那么每个模块选择的技术如下: SpringBoot版本选择目前较新的2.1.1.RELEASE版本 持久化 ...
- 带领技术小白入门——基于java的微信公众号开发(包括服务器配置、java web项目搭建、tomcat手动发布web项目、微信开发所需的url和token验证)
微信公众号对于每个人来说都不陌生,但是许多人都不清楚是怎么开发的.身为技术小白的我,在闲暇之余研究了一下基于java的微信公众号开发.下面就是我的实现步骤,写的略显粗糙,希望大家多多提议! 一.申请服 ...
- Web应用程序开发,基于Ajax技术的JavaScript树形控件
感谢http://www.cnblogs.com/dgrew/p/3181769.html#undefined 在Web应用程序开发领域,基于Ajax技术的JavaScript树形控件已经被广泛使用, ...
- 从开发一款基于Vue技术栈的全栈热重载生产环境脚手架,我学到了什么
浏览文章前 这一期,我分享给大家三点看源码的小技巧,这也是从别的大佬那总结的. 被反复使用的代码 这样的代码是一个软件的重点函数,一个大神的写法有很多精华值得学习. 穿越时间的代码 如果一段代码10年 ...
- rome实现rss订阅与发布
1. 什么是RSS RSS也叫聚合RSS,是在线共享内容的一种简易方式(也叫聚合内容, 简易供稿,Really Simple Syndication(真正简单的聚合 )).通常在时效性比较强的内容上使 ...
- .Net开发者必知的技术类RSS订阅指南
目录 RSS订阅资源 .Net基金会 MSDN中文版 杂志 微软 Github 系列 微软DevBlog系列 InfoQ中文版系列 如何找到大佬的 Twitter/Youtube/Stackoverf ...
随机推荐
- 遍历DOM树,过滤节点
jQuery还提供以下方法来过滤节点. 方法 说明 first() 获取第一个,示例 $('li').last() last() 获取最后一个,示例$('li').last() eq() ...
- Zookeeper与HBse安装过程纪录
1 zookeeper安装 1.1 环境变量 1.2 配置zoo.cfg 初次使用 ZooKeeper 时, 需要将 $ZOOKEEPER_HOME/conf 目录下的 zoo_sample.cfg ...
- lucene solr
理解 lucene 是一个全文搜索的引擎 solr是全文搜索的web实现 --------------------. java.lang.UnsupportedClassVersionError: ...
- Swift重写UIButton的图片和标题的位置
import UIKit class ResetBtn: UIButton { let IMAGE_RATIO :CGFloat = 0.7 // 图片占整个按钮高度的比例 let TITLE_FON ...
- /src/log4j.xml
<?xml version="1.0" encoding="UTF-8" ?> <!DOCTYPE log4j:configuration S ...
- hibernate ID
一:主键生成策略大体分类: 1:hibernate 负责对主键ID赋值 2:应用程序自己为主键ID赋值(不推荐使用) 3:底层数据库为主键ID赋值 二:具体用法 ...
- webuploader.js
PHP 多图上传,图片批量上传插件,webuploader.js,百度文件上传插件(案例教程) WebUploader作用: 使用WebUploader还可以批量上传文件.支持缩略图等等众多参数选项 ...
- Xshell 连接ubuntu虚拟机失败解决办法
当我们在VMWare上安装好Ubuntu虚拟机后,有时候会需要使用多个terminal窗口,但是在虚拟机中多个窗口互相切换查看不方便,这时候用物理机的xshell工具连接到虚拟机中去就显得很方便.直接 ...
- jstl-随机数-借用jsp嵌入的代码
) %></c:set> ${rand }
- perl5
1.perl包加入环境 export PERL5LIB=/export/personal1/wanglh/.software/perl/lib:$PERL5LIB