WCF Web Services + RSS Feed Reader + TreeView 使用方法 (SOAP Server Side / SOAP Client Side – Return DataSet)

 
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);
 
   }