| 类别: | 技术记, c#/.net |
|---|---|
| 标签: | shawl.qiu, rss, asp.net, example, ATOM |
| 摘要: | .. |
| 正文: |
目录: 1. Rss 2.0 输出范例[Rss2.0.aspx] 2. Atom 1.0 输出范例[Atom1.0.aspx] 3. 参考文档 shawl.qiu 2008-01-10 16:17:30 http://groups.google.com/group/shawlqiu?hl=en 下载: http://groups.google.com/group/shawlqiu/web/aspnet_feed.7z 内容: 1. Rss 2.0 输出范例[Rss2.0.aspx] <%@ Page Language="C#" AutoEventWireup="True" %> <!--#include file="..\Config.aspx"--> <script runat="server"> private void Page_Load(object sender, System.EventArgs e) { Response.ContentType = "text/xml"; Response.Charset = "UTF-8"; Response.Write("<?xml version=\"1.0\" encoding=\"UTF-8\" ?>"); Response.Write("<rss version=\"2.0\"><channel>"); Response.Write(__RssInfo()); Response.Write(__RssItem());; Response.Write("</channel></rss>"); Response.End(); } private string __RssInfo() { StringBuilder RssSb = new StringBuilder(); RssSb.Append ( String.Format ( "<title>{1}[RSS 2.0] - {0}</title>" , Sys.Db.InfoTbl.Rows[0]["Site_Name"] , String.Join(" ", XSysFunc.PageName(Sys.Db.PageTbl, __Id)) ) ); RssSb.Append ( String.Format ( "<link>{0}</link>" , Sys.Db.InfoTbl.Rows[0]["Site_Url"] ) ); RssSb.Append ( String.Format ( "<description>{0}</description>" , "for everyone..." ) ); RssSb.Append ( String.Format ( "<language>{0}</language>" , "zh-cn" ) ); RssSb.Append ( String.Format ( "<generator>{0}</generator>" , "shawl.qiu CMS" ) ); return RssSb.ToString(); } private string __RssItem() { StringBuilder RssSb = new StringBuilder(); string Sql = ""; string QsString = ""; string SqlQuery = ""; DataTable ModTbl; if(RegExp.IsEmpty(Sql)) { SqlQuery = XCat.SqlQuery(QsString); StringBuilder SqlSb = new StringBuilder(); SqlSb.Append("exec [_ListProc_Rss] "); if(Sys.Rank()==1) { SqlSb.Append("1"); } else { SqlSb.Append("0"); } SqlSb.Append(","); SqlSb.Append(Sys.Rank()); SqlSb.Append(",'"); SqlSb.Append(SqlQuery);; SqlSb.Append("%'"); Sql = SqlSb.ToString(); Response.Write(Sql); //Response.Write("<br/>SqlSb.ToString(): "+SqlSb.ToString()); } ModTbl = Xdb.Cmd(__Conn, Sql); for(int i=ModTbl.Rows.Count-1; i>=0; i--) { string sAuthor = ModTbl.Rows[i]["UName"]+""; string sText = HtmlToXml(ModTbl.Rows[i]["ADetails"]+""); string sLink = String.Format ( "{0}{1}display/?aid={2}" , Regex.Replace(Sys.Db.InfoTbl.Rows[0]["Site_Url"]+"", @"/$", "") , __Path , ModTbl.Rows[i]["AId"]+"" ); RssSb.Append("<item>"); RssSb.Append ( String.Format ( "<title>{0}</title>" , ModTbl.Rows[i]["ASubject"]+"" ) ); RssSb.Append ( String.Format ( "<author>{0}</author>" , sAuthor ) ); RssSb.Append ( String.Format ( "<description><![CDATA[ 摘要:<div>{0}</div><p><a href='{1}'>查看全文</a> ]]></description>" , sText , sLink ) ); RssSb.Append ( String.Format ( "<pubDate>{0}</pubDate>" , ModTbl.Rows[i]["ADate"]+"" ) ); RssSb.Append ( String.Format ( "<link>{0}</link>" , sLink ) ); RssSb.Append ( String.Format ( "<category>{0}</category>" , ModTbl.Rows[i]["CName"]+"" ) ); // RssSb.Append // ( // String.Format // ( // "<comments>{0}{1}reply/post/?aid={2}</comments>" // , Regex.Replace(Sys.Db.InfoTbl.Rows[0]["Site_Url"]+"", @"/$", "") // , __Path // , ModTbl.Rows[i]["AId"]+"" // ) // ); RssSb.Append("</item>"); } return RssSb.ToString(); } public static string HtmlToXml(string msg) {// shawl.qiu code if (msg != "" && msg != null) { msg = msg.Replace("&", "&"); msg = msg.Replace(">", ">"); msg = msg.Replace("<", "<"); msg = msg.Replace("\"", """); msg = msg.Replace("'", "'"); } return msg; }// end public static string HtmlToXml(string msg) </script> 2. Atom 1.0 输出范例[Atom1.0.aspx] <%@ Page Language="C#" AutoEventWireup="True" %> <!--#include file="..\Config.aspx"--> <script runat="server"> string sSiteUrl = ""; private void Page_Load(object sender, System.EventArgs e) { sSiteUrl = Regex.Replace(Sys.Db.InfoTbl.Rows[0]["Site_Url"]+"", @"/$", ""); Response.ContentType = "text/atom+xml"; Response.Charset = "UTF-8"; Response.Write ( String.Format ( @"<feed xmlns='http://www.w3.org/2005/Atom' xml:lang='{0}' xml:base='{1}'>" , "zh-cn" , sSiteUrl ) ); Response.Write(__RssInfo()); Response.Write(__RssItem()); Response.Write("</feed>"); Response.End(); } private string __RssInfo() { StringBuilder RssSb = new StringBuilder(); // <id>http://www.example.org/myfeed</id> RssSb.Append ( String.Format ( "<id>{0}</id>" , sSiteUrl+"/feed/" ) ); RssSb.Append ( String.Format ( "<title>{1}[Atom 1.0] - {0}</title>" , Sys.Db.InfoTbl.Rows[0]["Site_Name"] , String.Join(" ", XSysFunc.PageName(Sys.Db.PageTbl, __Id)) ) ); RssSb.Append ( String.Format ( " <updated>{0}Z</updated>" , (DateTime.Now+"").Replace(" ", "T") ) ); RssSb.Append ( String.Format ( " <link href='{0}' />" , __Path ) ); RssSb.Append ( String.Format ( "<link rel='self' href='{0}' />" , __Path+"feed/" ) ); RssSb.Append ( String.Format ( "<subtitle>{0}</subtitle>" , "for everyone..." ) ); RssSb.Append ( String.Format ( "<generator>{0}</generator>" , "shawl.qiu CMS" ) ); return RssSb.ToString(); } private string __RssItem() { StringBuilder RssSb = new StringBuilder(); string Sql = ""; string QsString = ""; string SqlQuery = ""; DataTable ModTbl; if(RegExp.IsEmpty(Sql)) { SqlQuery = XCat.SqlQuery(QsString); StringBuilder SqlSb = new StringBuilder(); SqlSb.Append("exec [_ListProc_Rss] "); if(Sys.Rank()==1) { SqlSb.Append("1"); } else { SqlSb.Append("0"); } SqlSb.Append(","); SqlSb.Append(Sys.Rank()); SqlSb.Append(",'"); SqlSb.Append(SqlQuery);; SqlSb.Append("%'"); Sql = SqlSb.ToString(); Response.Write(Sql); //Response.Write("<br/>SqlSb.ToString(): "+SqlSb.ToString()); } ModTbl = Xdb.Cmd(__Conn, Sql); for(int i=ModTbl.Rows.Count-1; i>=0; i--) { string sAuthor = ModTbl.Rows[i]["UName"]+""; string sText = HtmlToXml(ModTbl.Rows[i]["ADetails"]+""); string sLink = String.Format ( "{0}{1}display/?aid={2}" , Regex.Replace(Sys.Db.InfoTbl.Rows[0]["Site_Url"]+"", @"/$", "") , __Path , ModTbl.Rows[i]["AId"]+"" ); RssSb.Append("<entry>"); RssSb.Append ( String.Format ( "<id>{0}</id>" , ModTbl.Rows[i]["AId"] ) ); RssSb.Append ( String.Format ( "<title>{0}</title>" , ModTbl.Rows[i]["ASubject"]+"" ) ); RssSb.Append ( String.Format ( "<link href='{0}' />" , sLink ) ); RssSb.Append ( String.Format ( "<updated>{0}Z</updated>" , (ModTbl.Rows[i]["ALastUpdate"]+"").Replace(" ", "T") ) ); RssSb.Append ( String.Format ( "<pubDate>{0}</pubDate>" , (ModTbl.Rows[i]["ADate"]+"").Replace(" ", "T") ) ); RssSb.Append ( String.Format ( "<author><name>{0}</name></author>" , sAuthor ) ); RssSb.Append ( String.Format ( "<summary type='xhtml'><![CDATA[ 摘要:<div>{0}</div><p><a href='{1}'>查看全文</a> ]]></summary>" , sText , sLink ) ); RssSb.Append ( String.Format ( "<category>{0}</category>" , ModTbl.Rows[i]["CName"]+"" ) ); RssSb.Append ( String.Format ( @" <content type='html' xml:lang='en'> {0} </content>" , HtmlToXml(ModTbl.Rows[i]["AText"]+"") ) ); //, HtmlToXml(ModTbl.Rows[i]["AText"]+"") //, HtmlToXml(System.Text.Encoding.Unicode.GetString((byte[])ModTbl.Rows[i]["AText"])) RssSb.Append("</entry>"); } return RssSb.ToString(); } public static string HtmlToXml(string msg) {// shawl.qiu code if (msg != "" && msg != null) { msg = msg.Replace("&", "&"); msg = msg.Replace(">", ">"); msg = msg.Replace("<", "<"); msg = msg.Replace("\"", """); msg = msg.Replace("'", "'"); } return msg; }// end public static string HtmlToXml(string msg) </script> 3. 参考文档 rfc 4287 - The Atom Syndication Format RSS 2.0 specification. |
| 文章相关信息: | |
|---|---|
| 主题: | ASP.NET 输出 RSS 和 Atom 的两个范例, by shawl.qiu |
| 发表者: | shawl.qiu |
| 电子邮件: | shawl.qiu@gmail.com |
| QQ: | 908202921 |
| MSN: | btbtd@msn.com |
| Homepage: | http://www.btbtd.org/ |
| Blog: | http://blog.csdn.net/btbtd/ |
| 发表日期: | 2008-1-10 16:21:56 |
| 更新日期: | 2008-1-10 16:26:59 |
| 来源引用: | shawl.qiu CSharp DotNet 个人资料管理系统 |
| 引用本页: | http://gi.2288.org/mod/article/display/Default.aspx?aid=18177 |