选择显示字体大小

c#+asp.net开发基于web的rss阅读器


  最近我一直在寻找如何在web页面上显示rss feed的方法,我选择 c#asp.net作为工具。我创建了一个简单的处理函数来处理从一个url获得的rss feed。你可以直接使用这个简单的函数,或者改造成你想要的功能。

  这个函数使用一个字符串rssurl作为它的参数。这个字符串包含了rss的url。它使用rssurl的值建立了一个webrequest项:

system.net.webrequest myrequest = system.net.webrequest.create(rssurl);

  这个请求的响应将会被放到一个webresponse对象里:

system.net.webresponse myresponse = myrequest.getresponse();

  然后这个webresponse对象被用来建立一个流来取出xml的值:

system.io.stream rssstream = myresponse.getresponsestream();

  然后可以使用一个xmldocument对象来存储流中的xml内容。xmldocument对象用来调入xml的内容:

system.xml.xmldocument rssdoc = new system.xml.xmldocument();
rssdoc.load(rssstream);

  因为rss feed不只是一个xml文件,我们可以假设里面包含了一些rss标准的规定。这里,我们假设使用了rss 2.0。你可以从http://blogs.law.harvard.edu/tech/rss里得到规范的详细内容。

  具体的来说,每个项应该在rss/channel/里。使用xpath表达,一个项节点列表可以如下方式创建:

system.xml.xmlnodelist rssitems = rssdoc.selectnodes("rss/channel/item");

  rssitems存储了从rss里获得所有项节点的信息。这样就可取得内部所需要的信息了。这里,标题、链接和每个项的描述将会被显示。在rssitems中存储的每个项,每个标记(tag)元素都可以用selectsinglenode方法提取出来。返回的值将被赋给一个xmlnode对象。以下代码获取了一个标题节点:

system.xml.xmlnode rssdetail;
rssdetail = rssitems.item(i).selectsinglenode("title");

  现在标记需要被提取出来,使用innertext完成这项工作。在调用selectsinglenode之后,可以用rssdetail来测试格式化的rss xml是否包含某些标记:

if (rssdetail != null) { title = rssdetail.innertext; } else { title = ""; }

  这样,你就完成了从一个feed里获取rss内容的工作。剩下的工作就是调用这个方法来显示feed的内容了。以下是一个使用asp.net完成的完整的例子:

<%@ page language="c#" %>

<!doctype html public "-//w3c//dtd xhtml 1.0 transitional//en"
"http://www.w3.org/tr/xhtml1/dtd/xhtml1-transitional.dtd">

<script runat="server">
public void processrssitem(string rssurl)
{
 system.net.webrequest myrequest = system.net.webrequest.create(rssurl);
 system.net.webresponse myresponse = myrequest.getresponse();

 system.io.stream rssstream = myresponse.getresponsestream();
 system.xml.xmldocument rssdoc = new system.xml.xmldocument();
 rssdoc.load(rssstream);

 system.xml.xmlnodelist rssitems = rssdoc.selectnodes("rss/channel/item");

 string title = "";
 string link = "";
 string description = "";

 for (int i = 0; i < rssitems.count; i++)
 {
  system.xml.xmlnode rssdetail;

  rssdetail = rssitems.item(i).selectsinglenode("title");
  if (rssdetail != null)
  {
   title = rssdetail.innertext;
  }
  else
  {
   title = "";
  }

  rssdetail = rssitems.item(i).selectsinglenode("link");
  if (rssdetail != null)
  {
   link = rssdetail.innertext;
  }
  else
  {
   link = "";
  }

  rssdetail = rssitems.item(i).selectsinglenode("description");
  if (rssdetail != null)
  {
   description = rssdetail.innertext;
  }
  else
  {
   description = "";
  }

  response.write("<p><b><a href='" + link + "' target='new'>" + title + "</a></b>
");
  response.write(description + "</p>");
 }
}
</script>

html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>untitled page</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<%
 string rssurl = "http://www.codeguru.com/icom_includes/feeds/codeguru/rss-all.xml";
 response.write("<font size=5><b>site: " + rssurl + "</b></font><br />");
 processrssitem(rssurl);
 response.write("<hr />");

 rssurl = "http://www.developer.com/icom_includes/feeds/special/dev-5.xml";
 response.write("<font size=5><b>site: " + rssurl + "</b></font><br />");
 processrssitem(rssurl);
%>
</div>
</form>
</body>
</html

  显示结果如下:


关键字 本文所属关键字

相关 与本文相关文章

分类 所有文章关键字导航

源码编程相关

Java   Asp   PHP   .Net   XML   C/C++   CGI   VB   Jsp   J2ee   J2se   J2me   EJB   Servlet   Tomcat   Resin   Struts   Weblogic   Eclipse   ANT   GUI   JMS   Web servise   IDEA   Webphere   Hibernate   Spring   Jboss   Applet   Swing   Socket   Javamail   Perl   Ajax   P2P   安全   模式   框架   测试   开源   游戏

SQL数据库相关

My-SQL   Ms-SQL   Access   DB2   Oracle   Sybase   SQLserver   索引   存储过程   加密   数据库   分页   视图  

手机无线相关

3G   Wap   CDMA   GRPS   GSM   IVR   彩信   短信   无线   增值业务

网页设计制作相关

HTML   CSS   网页配色   网页特效   Javascript   VBscript   Dreamweaver   Frontpage   JS   Web   网站设计

网站建设推广相关

建站经验   网站优化   网站排名   推广   Alexa

操作系统/服务器相关

Windows XP   Windows 2000   Windows 2003   Windows Me   Windows 9.x   Linux   UNIX   注册表   操作系统   服务器   应用服务器

图形图像多媒体相关

Photoshop   Fireworks   Flash   Coreldraw   Illustrator   Freehand   Photoimpact   多媒体   图形图像

标准 网站致力的规范