当前位置:中国站长下载文章中心网页编程.NET编程 → ASP.NET RSS Toolkit(RSS工具)

ASP.NET RSS Toolkit(RSS工具)

减小字体 增大字体 作者:不详  来源:不详  发布时间:2006-8-14 8:28:08
     还记得以前吗?以前要做页面上写个小组件,调用指定(RSS输出地址的)的内容。最好的办法就是通过XSLT+XML来输出字符 串。让我们还是花了一分钟的时候回忆一下以前的做法吧
  
  曾经的做法:
  
   Protected Overrides Sub OnLoad(ByVal e As System.EventArgs)
   Dim CacheKey As String = Url & "-" & Sort
   Dim objCache As System.Web.Caching.Cache = HttpRuntime.Cache
   If objCache.Item(CacheKey) Is Nothing Then
   Dim xpDocument As XPathDocument = New XPathDocument(Url, XmlSpace.Preserve)
   Dim XTran As XslTransform = New XslTransform
   XTran.Load(Web.HttpRuntime.AppDomainAppPath & "TransForm.xsl") 'TransForm.xsl
   Dim sw As StringWriter = New StringWriter
  
   Dim xArgList As XsltArgumentList = New XsltArgumentList
   xArgList.AddParam("Sort", "", Sort)
   xArgList.AddParam("strlength", "", strLength)
   XTran.Transform(xpDocument, xArgList, sw)
   objCache.Insert(CacheKey, sw, Nothing, DateTime.Now.AddMinutes(15), TimeSpan.Zero)
   End If
   MyBase.Text = CType(objCache.Item(CacheKey), StringWriter).ToString
  
   End SubXSLT转换文件
  
  <?xml version="1.0" encoding="gb2312"?>
  <xsl:stylesheet
   version="1.0"
   xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
   xmlns="http://www.w3.org/TR/REC-html40"
   xmlns:msxsl="urn:schemas-microsoft-com:xslt"
   xmlns:dc="http://purl.org/dc/elements/1.1/"
   xmlns:slash="http://purl.org/rss/1.0/modules/slash/"
   xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
   xmlns:resuls="urn:StrLength">
  <xsl:param name="Sort" select="'10'"></xsl:param>
  <xsl:param name="strlength" select="'15'"></xsl:param>
  <xsl:template match="//rss">
   <xsl:apply-templates select="channel" />
  </xsl:template>
  
  <msxsl:script language="VB" implements-prefix="resuls">
  <![CDATA[
   Function GetSubString(byval origStr As String, byval endIndex As Integer) As String
   Dim bytes As Byte() = System.Text.Encoding.GetEncoding("gb2312").GetBytes(origStr)
   If endIndex >= bytes.Length Then
   Return origStr
   End If
   Dim subBytes(endIndex) As Byte
   Array.Copy(bytes, 0, subBytes, 0, endIndex)
   Return System.Text.Encoding.GetEncoding("gb2312").GetString(subBytes) + ""
  End Function 'GetSubString
  
   public function strDate(byval s as string)as string
   return CDate(s).Day.ToString & "日"
   end function
  ]]>
  </msxsl:script>
  
  <xsl:template match="channel">
   <table width="300" border="0" cellspacing="0" cellpadding="0">
   <xsl:for-each select="item">
   <xsl:if test="position() <=$Sort">
   <tr>
   <td width="21"><img src="http://img.sxsky.net/it/http://download.pchome.net/allimage/p1.gif"/></td>
   <td><a href="{link}"><xsl:value-of select="resuls:GetSubString(title,$strlength)"/></a> <xsl:value-of select="resuls:strDate(dc:date)"/></td>
   </tr>
   </xsl:if>
   </xsl:for-each>
   </table>
  </xsl:template>
  </xsl:stylesheet>
  
  而现在。根据MS的想法。一切只要拖拖控件就能完成我们的所要功能(我一向不喜欢这样,还是自己DIY好)。所以。下面介绍这款小工具:ASP.NET RSS Toolkit
  RSS TOOLKIT主要是从服务器上装载RSS输出(XML格式输出),生成数据集,然后填充到DATALIST控件当中。另外它支持数据缓存的功能
  目前最新版本:1.0.0.1
  新的特性:
  • Added MaxItems property to RssDataSource to limit the number of items returned.
  • Added automatic generation of <link> tags from RssHyperLink control, to light up the RSS
  toolbar icon in IE7. For more information please see http://blogs.msdn.com/rssteam/articles/PublishersGuide.aspx
  • Added protected Context property (of type HttpContext) to RssHttpHandlerBase class, to allow access to the
  HTTP request while generating a feed.
  • Added generation of LoadChannel(string url) method in RssCodeGenerator so that one strongly typed
  channel class can be used to consume different channels.
  • Fixed problem expanding app relative (~/…) links containing query string when generating RSS feeds.
  下载地址:点击下载
  详细说明:http://weblogs.asp.net/scottgu/archive/2006/02/22/438738.aspx
  
  创建新的页面
  
  
  为datalist控件创建新的数据源
  
  选择rssDataSource
  
  输入RSS地址(我这里以http://rss.msnbc.msn.com/id/3032091/device/rss/rss.xml)
  
  
  
  OK。现在可以浏览一下效果
  
  
  
  
  
  
    做人要厚道,请注明转自chinazhan中国站长(www.ChinaZhan.com)。