图表1
图表1是网页范例的执行画面,按下「取得RSS」按钮之后,窗体会自动向章立民研究室部落格所提供的 RSS 服务发出异步处理请求,等到接受请求处理完毕之后,会将目前章立民研究室部落格首页出现的文章与相关信息,以 Xml 格式掷回。
稍后窗体会接到所响应的 Xml 数据,通过 ASP.NET AJAX 所提供的 XPathBridgeTransformer 类别将 Xml 内容转换成 Script 可以识别的结果,经过版面编排后呈现在画面上。兹将转换 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 文件的条件。
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 数据转换