摘要:ASP.NET MVC - 實作讀取 RSS 功能
之前同事有做一個讀取 RSS 的功能,自己看了之後感覺滿炫的,所以今天突然有這樣的念頭,自己也來寫寫這個功能,當作一種練功好了。此次的實作,主要會用到 LINQ to XML,坦白說這也是我第一次寫這東西,好再找到了一個滿好的「參考資料」,用最簡單的方式將這個功能實作出來,以下就來說明實作的過程...
所用資料:http://www.dotblogs.com.tw/dc690216/Rss.aspx(小弟點部落的RSS清單)
步驟一:建立一個名為「RSS」的 Controller
步驟二:在「Models」中建立一個名為「RssClass」的類別
步驟三:建立相關欄位
Code:
public class RssClass
{
public string Title { get; set; }
public string PubDate { get; set; }
public string Link { get; set; }
public string Description { get; set; }
}
步驟四:在 RSSController 中撰寫讀取 RSS 的功能
Code:
using System.Xml.Linq;
using MVC_ReadRSS.Models;
namespace MVC_ReadRSS.Controllers
{
public class RSSController : Controller
{
public ActionResult Index()
{
return View();
}
[AcceptVerbs(HttpVerbs.Post)]
public ActionResult Index(string txtRSS)
{
if (!string.IsNullOrEmpty(txtRSS))
{
XDocument xDoc = XDocument.Load(txtRSS);
IEnumerable<RssClass> rssList = from p in xDoc.Descendants("item")
select new RssClass
{
Title = p.Element("title").Value,
PubDate = Convert.ToDateTime(p.Element("pubDate").Value).ToString("yyyy-MM-dd HH:mm:ss"),
Link = p.Element("link").Value,
Description = p.Element("description").Value,
};
return View(rssList);
}
return JavaScript("alert('資料有誤!!')");
}
}
}
步驟五:設計畫面
Code:
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" runat="server">
<h2>RSS</h2>
<%using (Html.BeginForm("Index", "RSS"))
{ %>
RSS Url:<%=Html.TextBox("txtRSS",
"http://www.dotblogs.com.tw/dc690216/Rss.aspx",
new { style="width:300px" })%>
<input type="submit" value="送出" />
<%} %>
<%if (Model != null)
{%>
<table>
<tr>
<th style="text-align:center">標題</th>
<th style="text-align:center">摘要</th>
<th style="text-align:center">發佈時間</th>
</tr>
<%
foreach (var item in Model)
{%>
<tr>
<td>
<a href="<%=item.Link %>" target="_blank">
<%=item.Title %>
</a>
</td>
<td><%=item.Description %></td>
<td><%=item.PubDate %></td>
</tr>
<%} %>
</table>
<%} %>
</asp:Content>
結果:
參考:
Using LINQ to XML (and how to build a custom RSS Feed Reader with it)