Bài viết này sẽ hướng dẫn bạn cách tạo các RSS Feed tuỳ chỉnh cho từng trang.
Như mô tả trong hình, các bạn sẽ thấy một biểu tượng RSS trên trang web này. Click vào sẽ thấy các thẻ XML được sắp xếp theo bố cục tuỳ chọn do mình xếp đặt
Bây giờ thực hiện viết code như sau:
Code ASPX.cs
protected void Page_Load(object sender, EventArgs e)
{
NewRSS rss = new NewRSS();
NewRSS.RssChannel channel = new NewRSS.RssChannel();
channel.Title = "Website Chia sẻ Kiến thức Công Nghệ & Kết nối Cộng đồng Online - DOTNET GROUP";
channel.Link = "http://dotnet.edu.vn";
channel.Description = "Chuyên đào tạo và Phát triển công nghệ phần mềm";
rss.AddRssChannel(channel);
NewRSS.RssItem item = new NewRSS.RssItem();
string WhereClause="";
WhereClause += " IdSubCategories=" + Request.Params["Id"] + " and ";
DataTable dtb = DataBindSQL.QueryToDataTable("Select Id, IdSubCategories, LoaiChuyenMuc, TieuDe, AnhDaiDien, TomTat, NoiDung, IdTacGia, Nguon, DuongDan, TrangThai, NgayCapNhat From Techs where " + WhereClause + " TrangThai=1 order by NgayCapNhat desc");
if (dtb.Rows.Count > 0)
{
//Phần liệt kê
foreach (DataRow dr in dtb.Rows)
{
item.Title = "" + dr["TieuDe"];
item.Link = String.Format("{0}ChuyenMuc/{1}-{2}.aspx", "http://dotnet.edu.vn/", GetTieuDe(dr["TieuDe"]), dr["Id"]);
item.Description = "" + dr["TomTat"];
rss.AddRssItem(item);
}
}
Response.Clear();
Response.ContentType = "text/xml";
Response.Write(rss.RssDocument);
Response.End();
}
Tạo NewRSS.cs với nội dung như bên dưới
private XmlDocument _rss = null;
public struct RssChannel
{
public string Title;
public string Link;
public string Description;
}
public struct RssItem
{
public string Title;
public string Link;
public string Description;
}
private static XmlDocument addRssChannel(XmlDocument xmlDocument, RssChannel channel)
{
XmlElement channelElement = xmlDocument.CreateElement("channel");
XmlNode rssElement = xmlDocument.SelectSingleNode("rss");
rssElement.AppendChild(channelElement);
XmlElement titleElement = xmlDocument.CreateElement("title");
titleElement.InnerText = channel.Title;
channelElement.AppendChild(titleElement);
XmlElement linkElement = xmlDocument.CreateElement("link");
linkElement.InnerText = channel.Link;
channelElement.AppendChild(linkElement);
XmlElement descriptionElement = xmlDocument.CreateElement("description");
descriptionElement.InnerText = channel.Description;
channelElement.AppendChild(descriptionElement);
// Generator information
XmlElement generatorElement = xmlDocument.CreateElement("generator");
generatorElement.InnerText = "Your RSS Generator name and version ";
channelElement.AppendChild(generatorElement);
return xmlDocument;
}
private static XmlDocument addRssItem(XmlDocument xmlDocument, RssItem item)
{
XmlElement itemElement = xmlDocument.CreateElement("item");
XmlNode channelElement = xmlDocument.SelectSingleNode("rss/channel");
XmlElement titleElement = xmlDocument.CreateElement("title");
titleElement.InnerText = item.Title;
itemElement.AppendChild(titleElement);
XmlElement linkElement = xmlDocument.CreateElement("link");
linkElement.InnerText = item.Link;
itemElement.AppendChild(linkElement);
XmlElement descriptionElement = xmlDocument.CreateElement("description");
descriptionElement.InnerText = item.Description;
itemElement.AppendChild(descriptionElement);
// append the item
channelElement.AppendChild(itemElement);
return xmlDocument;
}
public NewRSS()
{
_rss = new XmlDocument();
XmlDeclaration xmlDeclaration = _rss.CreateXmlDeclaration("1.0", "utf-8", null);
_rss.InsertBefore(xmlDeclaration, _rss.DocumentElement);
XmlElement rssElement = _rss.CreateElement("rss");
XmlAttribute rssVersionAttribute = _rss.CreateAttribute("version");
rssVersionAttribute.InnerText = "2.0";
rssElement.Attributes.Append(rssVersionAttribute);
_rss.AppendChild(rssElement);
}
public void AddRssChannel(RssChannel channel)
{
_rss = addRssChannel(_rss, channel);
}
public void AddRssItem(RssItem item)
{
_rss = addRssItem(_rss, item);
}
public string RssDocument
{
get
{
return _rss.OuterXml;
}
}
public XmlDocument RssXMLDocument
{
get
{
return _rss;
}
}