如何实现rss创建以及读取???? rt有没有类似java的开源项目?才网上搜了一下,大概了解了rss是个什么东东,但还是没有头绪。请哪位大侠给点思路,或者直接由代码更好谢谢 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 http://tracefact.net/Asp-Net/Creating-and-Consuming-Rss-Feeds-on-Your-Website.aspx介绍的很详细!~ 我这打不开其它网站可不可以麻烦详细说一些rss的解析,读取。谢谢 1.在线生成RSS聚合页。(1)创建Rss.aspx<%@ Page language="c#" Codebehind="Rss.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.Rss" %>只留下这一行,其余的都删掉。(2)后台代码实现方式1;Rss.aspx.cs private void Page_Load(object sender, System.EventArgs e) { Response.ContentType="text/xml"; Response.Write(GetRSS()); } /// <summary> /// 取得聚合文章 /// </summary> /// <returns></returns> public string GetRSS() { News t=new News();//自己的业务类 DataSet ds=t.GetListByClass(1);//根据类别得到数据 StringBuilder strCode=new StringBuilder(); strCode.Append("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>"); strCode.Append("<rss version='2.0' xmlns:dc=\"http://purl.org/dc/elements/1.1//""); strCode.Append(" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback//" "); strCode.Append(" xmlns:wfw=\"http://wellformedweb.org/CommentAPI//" xmlns:slash=\"http://purl.org/rss/1.0/modules/slash//">"); strCode.Append("<channel>"); strCode.Append("<title>李天平RSSDemo</title>"); strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"</link> "); strCode.Append("<description>天道酬勤</description> "); strCode.Append("<copyright>Copyright 2005</copyright> "); foreach(DataRow row in ds.Tables[0].Rows) { string Id=row["Id"].ToString(); string title=row["title"].ToString(); string description=row["description"].ToString(); string pubdate=row["pubdate"].ToString(); string ClassId=row["ClassId"].ToString(); //string author=row["author"].ToString(); strCode.Append("<item>"); strCode.Append("<title>"+title+"</title>"); strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id+"</link>"); strCode.Append("<subject>"+description+"</subject>"); strCode.Append("<description><![CDATA["+description+"]]></description>"); strCode.Append("<PubDate>"+pubdate+"</PubDate>"); strCode.Append("<category>"+ClassId+"</category>"); strCode.Append("</item>"); } strCode.Append("</channel>"); strCode.Append("</rss>"); return strCode.ToString(); } (3) XmlTextWriter实现方式2;Rss.aspx.cs string xmlDoc="rss.xml"; private void Page_Load(object sender, System.EventArgs e) { xmlDoc=Server.MapPath(".")+xmlDoc; GetRSS2(); XmlDocument doc= new XmlDocument(); doc.Load(xmlDoc); Response.ContentType = "text/xml"; doc.Save(Response.Output); } /// <summary> /// 取得聚合文章 /// </summary> /// <returns></returns> public void GetRSS2() { News t=new News(); DataSet ds=t.GetListByClass(1); XmlTextWriter writer = new XmlTextWriter(xmlDoc,Encoding.UTF8); writer.Formatting = Formatting.Indented; writer.WriteStartDocument(true); writer.WriteComment("RSS页的实现"); writer.WriteStartElement("rss"); writer.WriteAttributeString("version","2.0"); writer.WriteStartElement("channel"); writer.WriteStartElement("title"); writer.WriteString("李天平RSSDemo"); writer.WriteEndElement(); writer.WriteStartElement("link"); writer.WriteString("http://"+request.servervariables["server_name/"]); writer.WriteEndElement(); writer.WriteStartElement("description"); writer.WriteString("天道酬勤"); writer.WriteEndElement(); writer.WriteStartElement("copyright"); writer.WriteString("Copyright 2005"); writer.WriteEndElement(); writer.WriteStartElement("language"); writer.WriteString("zh-cn"); writer.WriteEndElement(); foreach(DataRow row in ds.Tables[0].Rows) { string Id=row["Id"].ToString(); string title=row["title"].ToString(); string description=row["description"].ToString(); string pubdate=row["pubdate"].ToString(); string ClassId=row["ClassId"].ToString(); //string author=row["author"].ToString(); writer.WriteStartElement("item"); writer.WriteStartElement("title"); writer.WriteString(title); writer.WriteEndElement(); writer.WriteStartElement("link"); writer.WriteString("http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id) ; writer.WriteEndElement(); writer.WriteStartElement("description"); writer.WriteCData(description); writer.WriteEndElement(); writer.WriteStartElement("pubDate"); writer.WriteString(pubdate); writer.WriteEndElement(); writer.WriteStartElement("category"); writer.WriteString(ClassId); writer.WriteEndElement(); writer.WriteEndElement(); } writer.WriteEndElement(); writer.WriteEndElement(); writer.Flush(); writer.Close(); }2.在线RSS阅读获取。页面代码: <P style="FONT-SIZE: 11px"> Feed种子:<asp:TextBox id="FeedUrl" runat="server" Width="440px"></asp:TextBox><BR> 显示条数:<asp:TextBox id="Num" runat="server" Width="48px"></asp:TextBox></P> <P style="FONT-SIZE: 11px"> <asp:Button id="GetFeed" runat="server" Text="获得RSS"></asp:Button><BR> <BR> <asp:Label id="RssFeed" runat="server"></asp:Label></P>后台代码: /// <summary> /// 获得要显示的Feed种子数据 /// </summary> /// <param name="RssUrl"></param> /// <param name="showNewsCount"></param> /// <returns></returns> public string LoadRSS(string RssUrl, int showNewsCount) { string strRssList = ""; string strMsg; try { XmlDocument objXMLDoc = new XmlDocument(); objXMLDoc.Load(RssUrl); XmlNodeList objItems = objXMLDoc.GetElementsByTagName("item"); if(showNewsCount > 30) showNewsCount = 10; if(showNewsCount < 1) showNewsCount = objItems.Count; string title=""; string link=""; int i; if(objXMLDoc.HasChildNodes == true) { i = 1; foreach(XmlNode objNode in objItems) { if(i<=showNewsCount) { if(objNode.HasChildNodes == true) { XmlNodeList objItemsChild = objNode.ChildNodes; foreach(XmlNode objNodeChild in objItemsChild) { switch(objNodeChild.Name) { case "title": title = objNodeChild.InnerText; break; case "link": link = objNodeChild.InnerText; break; } } i = i+1; strRssList += "<a href=" + link +" target=_blank>" + title + "</a><br>"; } } } } strMsg = strRssList; } catch { strMsg = "RSS Feed 源数据出错!"; } return strMsg; } //获取按钮,获取指定RSS private void GetFeed_Click(object sender, System.EventArgs e) { if(FeedUrl.Text == "")//RSS地址 { RssFeed.Text = "信息源不能为空,您可刷新重试或联系管理员!"; return ; } RssFeed.Text = LoadRSS(FeedUrl.Text,Convert.ToInt32(Num.Text)); //获取指定数目 }3.无刷新动态更新的在线RSS阅读获取<%@ Page language="c#" Codebehind="XmlHttp.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.XmlHttp" %><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" ><HTML> <HEAD> <title>XmlHttp</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"> <style>td { font-size: 9pt} </style> <script> <!-- var oDiv var xh function getXML() { xh =new ActiveXObject("Microsoft.XMLHTTP"); oDiv = document.getElementById("rssitem"); oDiv.style.display= ""; try { //如果是本地改成下面语句直接读取 //xh.open("GET","/Rss.aspx",false); xh.open("GET","Http://ltp.cnblogs.com/Rss.aspx",false); xh.send(null); loadData(xh,oDiv); } catch(e) { error(oDiv); } } function loadData(xh,oDiv) { if (xh.readyState == 4) { xml = xh.responsexml; var i; var nodes = xml.selectNodes("/rss/channel/item"); var bloglink = xml.selectSingleNode("/rss/channel/link").text; oDiv.innerHTML = ""; var html; for(i=0;i<nodes.length;i++) { html += "<div >"; html += " <div >"; html += " <a class=font1 href='" +nodes[i].selectSingleNode("link").text + "' target='_blank'>" + nodes[i].selectSingleNode("title").text +"</a><BR><BR>"; html += " </div>"; html += " <div >"; html += " " +nodes[i].selectSingleNode("description").text; html += " </div>" //html += " </div>"; html += "</div><hr>"; } oDiv.innerHTML = html; } else { error(oDiv); } } function error(oDiv) { oDiv.innerHTML = "载入失败"; } --> </script> </HEAD> <body MS_POSITIONING="GridLayout" onload="window.setTimeout('getXML()',200);"> <form id="Form1" method="post" runat="server"> <div align=center> <table cellpadding="0" cellspacing="0" border="0" width="80%"> <tr> <td> <div id="rssitem" style="WIDTH:80%">数据载入中...</div> </td> </tr> </table> </div> </form> </body></HTML> 有关隐藏域有问题 Ebay API 标注商品已发货并上传包裹单号 CompleteSale怎么调用的啊? 为什么网页中图片很多时,使用滚动条上下滚动时图片会很卡,感觉会出现波浪似的!如何解决这个问题呢? web.config 文件全路配置 数据排序问题?? CSDN框架的边界是怎样作出来的? 正则表达式的困惑 熟悉2.0的请过来指点一下 [求助]为什么事件不起作用 关于编写事件日志的问题? 点击BUTTON2提示缺少对象 三层架构如何进行数据验证
可不可以麻烦详细说一些rss的解析,读取。
谢谢
<%@ Page language="c#" Codebehind="Rss.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.Rss" %>
只留下这一行,其余的都删掉。(2)后台代码实现方式1;Rss.aspx.cs private void Page_Load(object sender, System.EventArgs e)
{
Response.ContentType="text/xml";
Response.Write(GetRSS());
} /// <summary>
/// 取得聚合文章
/// </summary>
/// <returns></returns>
public string GetRSS()
{
News t=new News();//自己的业务类
DataSet ds=t.GetListByClass(1);//根据类别得到数据
StringBuilder strCode=new StringBuilder();
strCode.Append("<?xml version=\"1.0\" encoding=\"utf-8\" standalone=\"yes\" ?>");
strCode.Append("<rss version='2.0' xmlns:dc=\"http://purl.org/dc/elements/1.1//"");
strCode.Append(" xmlns:trackback=\"http://madskills.com/public/xml/rss/module/trackback//" ");
strCode.Append(" xmlns:wfw=\"http://wellformedweb.org/CommentAPI//" xmlns:slash=\"http://purl.org/rss/1.0/modules/slash//">");
strCode.Append("<channel>");
strCode.Append("<title>李天平RSSDemo</title>");
strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"</link> ");
strCode.Append("<description>天道酬勤</description> ");
strCode.Append("<copyright>Copyright 2005</copyright> ");
foreach(DataRow row in ds.Tables[0].Rows)
{
string Id=row["Id"].ToString();
string title=row["title"].ToString();
string description=row["description"].ToString();
string pubdate=row["pubdate"].ToString();
string ClassId=row["ClassId"].ToString();
//string author=row["author"].ToString(); strCode.Append("<item>");
strCode.Append("<title>"+title+"</title>");
strCode.Append("<link>http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id+"</link>");
strCode.Append("<subject>"+description+"</subject>");
strCode.Append("<description><![CDATA["+description+"]]></description>");
strCode.Append("<PubDate>"+pubdate+"</PubDate>");
strCode.Append("<category>"+ClassId+"</category>");
strCode.Append("</item>");
}
strCode.Append("</channel>");
strCode.Append("</rss>");
return strCode.ToString();
} (3) XmlTextWriter实现方式2;Rss.aspx.cs string xmlDoc="rss.xml";
private void Page_Load(object sender, System.EventArgs e)
{
xmlDoc=Server.MapPath(".")+xmlDoc;
GetRSS2();
XmlDocument doc= new XmlDocument();
doc.Load(xmlDoc);
Response.ContentType = "text/xml";
doc.Save(Response.Output);
}
/// <summary>
/// 取得聚合文章
/// </summary>
/// <returns></returns>
public void GetRSS2()
{
News t=new News();
DataSet ds=t.GetListByClass(1);
XmlTextWriter writer = new XmlTextWriter(xmlDoc,Encoding.UTF8);
writer.Formatting = Formatting.Indented;
writer.WriteStartDocument(true);
writer.WriteComment("RSS页的实现");
writer.WriteStartElement("rss");
writer.WriteAttributeString("version","2.0");
writer.WriteStartElement("channel");
writer.WriteStartElement("title");
writer.WriteString("李天平RSSDemo");
writer.WriteEndElement();
writer.WriteStartElement("link");
writer.WriteString("http://"+request.servervariables["server_name/"]);
writer.WriteEndElement();
writer.WriteStartElement("description");
writer.WriteString("天道酬勤");
writer.WriteEndElement();
writer.WriteStartElement("copyright");
writer.WriteString("Copyright 2005");
writer.WriteEndElement();
writer.WriteStartElement("language");
writer.WriteString("zh-cn");
writer.WriteEndElement();
foreach(DataRow row in ds.Tables[0].Rows)
{
string Id=row["Id"].ToString();
string title=row["title"].ToString();
string description=row["description"].ToString();
string pubdate=row["pubdate"].ToString();
string ClassId=row["ClassId"].ToString();
//string author=row["author"].ToString(); writer.WriteStartElement("item");
writer.WriteStartElement("title");
writer.WriteString(title);
writer.WriteEndElement();
writer.WriteStartElement("link");
writer.WriteString("http://"+Request.ServerVariables["SERVER_NAME"]+"/NewsShow.aspx?ID="+Id) ;
writer.WriteEndElement();
writer.WriteStartElement("description");
writer.WriteCData(description);
writer.WriteEndElement();
writer.WriteStartElement("pubDate");
writer.WriteString(pubdate);
writer.WriteEndElement();
writer.WriteStartElement("category");
writer.WriteString(ClassId);
writer.WriteEndElement();
writer.WriteEndElement();
}
writer.WriteEndElement();
writer.WriteEndElement();
writer.Flush();
writer.Close();
}
2.在线RSS阅读获取。页面代码:
<P style="FONT-SIZE: 11px">
Feed种子:<asp:TextBox id="FeedUrl" runat="server" Width="440px"></asp:TextBox><BR>
显示条数:<asp:TextBox id="Num" runat="server" Width="48px"></asp:TextBox></P>
<P style="FONT-SIZE: 11px">
<asp:Button id="GetFeed" runat="server" Text="获得RSS"></asp:Button><BR>
<BR>
<asp:Label id="RssFeed" runat="server"></asp:Label></P>后台代码:
/// <summary>
/// 获得要显示的Feed种子数据
/// </summary>
/// <param name="RssUrl"></param>
/// <param name="showNewsCount"></param>
/// <returns></returns>
public string LoadRSS(string RssUrl, int showNewsCount)
{
string strRssList = "";
string strMsg;
try
{
XmlDocument objXMLDoc = new XmlDocument();
objXMLDoc.Load(RssUrl);
XmlNodeList objItems = objXMLDoc.GetElementsByTagName("item");
if(showNewsCount > 30)
showNewsCount = 10;
if(showNewsCount < 1)
showNewsCount = objItems.Count;
string title="";
string link="";
int i; if(objXMLDoc.HasChildNodes == true)
{
i = 1;
foreach(XmlNode objNode in objItems)
{
if(i<=showNewsCount)
{
if(objNode.HasChildNodes == true)
{
XmlNodeList objItemsChild = objNode.ChildNodes;
foreach(XmlNode objNodeChild in objItemsChild)
{
switch(objNodeChild.Name)
{
case "title":
title = objNodeChild.InnerText;
break;
case "link":
link = objNodeChild.InnerText;
break;
}
}
i = i+1;
strRssList += "<a href=" + link +" target=_blank>" + title + "</a><br>";
}
}
}
}
strMsg = strRssList;
}
catch
{
strMsg = "RSS Feed 源数据出错!";
}
return strMsg;
} //获取按钮,获取指定RSS
private void GetFeed_Click(object sender, System.EventArgs e)
{
if(FeedUrl.Text == "")//RSS地址
{
RssFeed.Text = "信息源不能为空,您可刷新重试或联系管理员!";
return ;
}
RssFeed.Text = LoadRSS(FeedUrl.Text,Convert.ToInt32(Num.Text)); //获取指定数目
}3.无刷新动态更新的在线RSS阅读获取<%@ Page language="c#" Codebehind="XmlHttp.aspx.cs" AutoEventWireup="false" Inherits="LiTianPing.XmlHttp" %>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN" >
<HTML>
<HEAD>
<title>XmlHttp</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">
<style>td { font-size: 9pt}
</style>
<script>
<!--
var oDiv
var xh
function getXML()
{
xh =new ActiveXObject("Microsoft.XMLHTTP");
oDiv = document.getElementById("rssitem");
oDiv.style.display= "";
try
{
//如果是本地改成下面语句直接读取
//xh.open("GET","/Rss.aspx",false);
xh.open("GET","Http://ltp.cnblogs.com/Rss.aspx",false);
xh.send(null);
loadData(xh,oDiv);
}
catch(e)
{
error(oDiv);
}
}
function loadData(xh,oDiv)
{
if (xh.readyState == 4)
{
xml = xh.responsexml;
var i;
var nodes = xml.selectNodes("/rss/channel/item");
var bloglink = xml.selectSingleNode("/rss/channel/link").text;
oDiv.innerHTML = "";
var html;
for(i=0;i<nodes.length;i++)
{
html += "<div >";
html += " <div >";
html += " <a class=font1 href='" +nodes[i].selectSingleNode("link").text + "' target='_blank'>" + nodes[i].selectSingleNode("title").text +"</a><BR><BR>";
html += " </div>";
html += " <div >";
html += " " +nodes[i].selectSingleNode("description").text;
html += " </div>"
//html += " </div>";
html += "</div><hr>"; }
oDiv.innerHTML = html;
}
else
{
error(oDiv);
}
} function error(oDiv)
{
oDiv.innerHTML = "载入失败";
}
-->
</script>
</HEAD>
<body MS_POSITIONING="GridLayout" onload="window.setTimeout('getXML()',200);">
<form id="Form1" method="post" runat="server">
<div align=center>
<table cellpadding="0" cellspacing="0" border="0" width="80%">
<tr>
<td>
<div id="rssitem" style="WIDTH:80%">数据载入中...</div>
</td>
</tr>
</table>
</div>
</form>
</body>
</HTML>