ASP.NET用AJAX 如何制作RSS订阅器

分类: Ajax   出处:iocblog整理  更新时间:2009-03-25   添加到收藏  

 远在 asp.net ajax 的前一个版本,也就是 microsoft atlas 的官方文件中提到,atlas framework 支持扩展名为 asbx bridge 服务,用来将远程 rss 或者是 web 服务所掷回的 xml 文件转换为 javascript 可读的内容。但是,目前 asp.net ajax rc 版本已经不再支持 bridge 服务,难道就没有其它的解决办法吗?答案是肯定的。  

 图表1是网页范例的执行画面,按下「取得rss按钮之后,窗体会自动向章立民研究室部落格所提供的 rss 服务发出异步处理请求,等到服务器接受请求处理完毕之后,会将目前章立民研究室部落格首页出现的文章与相关信息,以 xml 格式掷回。

 

 稍后窗体会接到服务器所响应的 xml 数据,通过 asp.net ajax 所提供的 xpathbridgetransformer 类别将 xml 内容转换成 javascript 可以识别的结果,经过版面编排后呈现在画面上。兹将转换 xml 文件格式的 web 服务程序代码列示如下:

 

<scriptservice()> _
public class ws_rss_header
  inherits system.web.services.webservice

<webmethod()> _
public function requestrss() as object
 ' 读取 web.config 组态档设定。
 dim rssurl as new _
 uri(webconfigurationmanager.appsettings.get("limingstudiorssurl").tostring())
 
 if rssurl.scheme = uri.urischemehttp then
   ' 建立 httpwebrequest 类别对象来发出 http 请求。
   dim rssrequest as httpwebrequest = httpwebrequest.create(rssurl)
   rssrequest.method = webrequestmethods.http.get
  
   ' 建立 httpwebresponse 类别对象来接受 http 响应。
   dim rssresponse as httpwebresponse = rssrequest.getresponse()
  
   ' 建立代表 http 响应的 streamreader 串流对象。
   dim rssreader as new streamreader(rssresponse.getresponsestream())
  
   ' http 响应(也就是 xml 文件内容)写入 string 对象。
   dim rssresult as string = rssreader.readtoend()
  
   ' 建立 xpathbridgetransformer 类别对象来转换 xml 内容。
   dim rsstransformer as new _
     microsoft.web.preview.services.xpathbridgetransformer()
  
   ' 建立 bridgetransformdata 类别对象储存转换 xml 信息。
   dim rssdata as new microsoft.web.preview.services.bridgetransformdata()
  
   ' 设定 xml 转换准则,也就是筛选 xml 文件的条件。[来源www.iocblog.net]
   rssdata.attributes.add("selector", "channel")
  
   ' 建立 dictionary 对象,储存筛选后的 xml 内容。
   dim rssdictionary as new dictionary(of string, string)(3)
  
   ' 加入 dictionary 对象内容,
   ' 键值(key)代表前端 javascript 撰写指令码使用的名称,
   ' 数值(value)代表 xml 文件标签。
   rssdictionary.add("headertitle", "title")
   rssdictionary.add("headerlink", "link")
   rssdictionary.add("headerdescription", "description")
  
   ' dictionary 对象 加入 bridgetransformdata 类别对象。
   rssdata.dictionaries.add("selectednodes", rssdictionary)
  
   ' 初始化建立 xpathbridgetransformer 类别对象,预备进行 xml 数据转换。
   rsstransformer.initialize(rssdata)
  
   ' 正式进行 xml 文件转换,并将结果掷回前端。
   return rsstransformer.transform(rssresult)
 end if
 return nothing
end function
end class

 最后要提到一点,除非您希望使用旧版本的 atlas framework 来建置asp.net ajax 应用程序,否则应该以官方正式发布的 asp.net ajax 语法作为学习对象,我们下次见。


Tag: RSS ,订阅器



文章整理:iocblog
版权申明:本站文章均来自网络,如有侵权,请联系我们,我们收到后立即删除,谢谢!
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有。