主要是生成、读取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("&","&");
data=data.Replace("/",""");
data=data.Replace("'","&qapos;");
data=data.Replace("<","<");
data=data.Replace(">",">");
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>");
}
}
本文来自优快云博客,转载请标明出处:http://blog.youkuaiyun.com/wszhoho/archive/2007/05/09/1601888.aspx