WCF Web Services + RSS Feed Reader + TreeView 使用方法 (SOAP Server Side / SOAP Client Side – Return DataSet)
(SOAP Server Side)
IService1.cs |
using System; using System.Collections.Generic; using System.Runtime.Serialization; using System.ServiceModel; using System.Data; using System.Xml; namespace WcfService1 { // 注意: 您可以使用 [重構] 功能表上的 [重新命名] 命令同時變更程式碼和組態檔中的介面名稱 "IService1"。 [ServiceContract] public interface IService1 { [OperationContract] DataSet ReturnNodeList(String FeedURL); // TODO: 在此新增您的服務作業 } } |
Service1.svc.cs |
using System; using System.Collections.Generic; using System.Text; using System.Data.SqlClient; using System.ServiceProcess; using System.Data; using System.Web.UI.WebControls; using System.Xml; namespace WcfService1 { // 注意: 您可以使用 [重構] 功能表上的 [重新命名] 命令同時變更程式碼、svc 和組態檔中的類別名稱 "Service1"。 public class Service1 : IService1 { public DataSet ReturnNodeList(String FeedURL) { XmlDataSource XmlDataSource1 = new XmlDataSource(); XmlDataSource1.DataFile = FeedURL; XmlDocument xmlDoc = XmlDataSource1.GetXmlDocument(); XmlNodeList nodelist = xmlDoc.SelectNodes("/rss/channel"); String HeadTitle = nodelist[0].SelectSingleNode("title").InnerText; String HeadLink = nodelist[0].SelectSingleNode("link").InnerText; DataTable dt = new DataTable(); dt.Columns.Add("HeadTitle"); dt.Columns.Add("HeadLink"); dt.Rows.Add(HeadTitle, HeadLink); DataSet ds = new DataSet(); ds.Tables.Add(dt); nodelist = xmlDoc.SelectNodes("/rss/channel/item"); dt = new DataTable(); dt.Columns.Add("Title"); dt.Columns.Add("URL"); dt.Columns.Add("Description"); String Title; String Description; String URL; for (int i = 0; i < nodelist.Count; i++) { Title = nodelist[i].SelectSingleNode("title").InnerText; URL = nodelist[i].SelectSingleNode("link").InnerText; Description = nodelist[i].SelectSingleNode("description").InnerText; dt.Rows.Add(Title, URL, Description); } ds.Tables.Add(dt); return ds; } } } |
(SOAP Client Side – 需自行增加 Service References)
Default.aspx |
<asp:TreeView ID="TreeView1" runat="server" Width="800" ExpandDepth="0" NodeWrap="True"/> |
Default.aspx.cs |
using System.Data; using WebApplication9.ServiceReference1; using System.Xml; private void RSSWCFReaderTreeView(String FeedURL) { Service1Client WCFObj = new Service1Client(); DataSet ds = WCFObj.ReturnNodeList(FeedURL); DataTable dt = ds.Tables[0]; WCFObj.Close(); TreeNode Feed = new TreeNode(); Feed.Text = dt.Rows[0][“HeadTitle"].ToString(); Feed.NavigateUrl = dt.Rows[0][“HeadLink"].ToString(); dt = ds.Tables[1]; foreach (DataRow rows in dt.Rows) { TreeNode temp = new TreeNode(); temp.Text = rows[“Title"].ToString(); temp.NavigateUrl = rows[“URL"].ToString(); TreeNode feedContent = new TreeNode(); feedContent.Text = rows[“Description"].ToString(); temp.ChildNodes.Add(feedContent); Feed.ChildNodes.Add(temp); } TreeView1.Nodes.Add(Feed); } |