asp.net中生成读取rss

主要是生成、读取xml文件,这里Repeater作为xml的载体,并不真正生成xml文件。
要注意<![CDATA[ ]]>语句,CDATA 节用于转义,否则将被识别为标记的文本块。<![ ]>类似html中的<!---->标签,用于兼容一些浏览器。
 RssFeed.aspx
<%@ Page language="c#" Codebehind="RssFeed.aspx.cs" AutoEventWireup="false" Inherits="MyRss.RssFeed" %>
<asp:Repeater id="Repeater1" runat="server">
<HeaderTemplate>
<rss version="2.0">
<channel>
<title>NewsShow</title>
<link>http://192.168.1.7/MainOne_HZ/News/</link>
<description>Rss Feed for 192.168.1.7</description>
</HeaderTemplate>

<ItemTemplate>
<item>
<title><%# FormatForXML(DataBinder.Eval(Container.DataItem,"newsname")) %></title>
<description><![CDATA[<%#FormatForXML(DataBinder.Eval(Container.DataItem,"newsinfo"))%>]]></description>
<link>http://192.168.1.7/MainOne_HZ/News/NewsShow.aspx?ID=<%# DataBinder.Eval(Container.DataItem, "newsid") %></link>
<pubDate><%# String.Format("{0:R}",DataBinder.Eval(Container.DataItem,"wtime")) %></pubDate>
</item>
</ItemTemplate>

<FooterTemplate>
</channel>
</rss>
</FooterTemplate>
</asp:Repeater>

RssFeed.aspx.cs
  private void Page_Load(object sender, System.EventArgs e)
  {
   // 在此处放置用户代码以初始化页面
   if(!this.IsPostBack)
   {
    Response.ContentType="text/xml";
    SqlConnection con=new SqlConnection(System.Configuration.ConfigurationSettings.AppSettings["ConnectionString"]);
    SqlCommand cmd=new SqlCommand("select top 20 * from news order by newsid desc",con);
    con.Open();
    SqlDataReader dr=cmd.ExecuteReader();
    Repeater1.DataSource=dr;
    Repeater1.DataBind();
    dr.Close();
    con.Close();
   }  
  }
  protected string FormatForXML(object input)
  {
   string data=input.ToString();
   data=data.Replace("&","&amp;");
   data=data.Replace("/","&quot;");
   data=data.Replace("'","&qapos;");
   data=data.Replace("<","&lt;");
   data=data.Replace(">","&gt");
   return data;
  }

ReadRss.aspx
<%@ Page language="c#" Codebehind="ReadRss.aspx.cs" AutoEventWireup="false" Inherits="MyRss.ReadRss" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
 <HEAD>
  <title>ReadRss</title>
  <meta name="GENERATOR" Content="Microsoft Visual Studio .NET 7.1">
  <meta name="CODE_LANGUAGE" Content="C#">
  <meta name="vs_defaultClientScript" content="JavaScript">
  <meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
 </HEAD>
 <body MS_POSITIONING="GridLayout">
  <form id="Form1" method="post" runat="server">
  <%
  string rssURL = "http://192.168.1.7/MainOne_HZ/MyRss/RssFeed.aspx";
  ProcessRSSItem(rssURL);%>
  </form>
 </body>
</HTML>

ReadRss.aspx.cs
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><br/>");
    Response.Write(description + "</p>");
   }
  }


本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/wszhoho/archive/2007/05/09/1601888.aspx

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值