Thành viên
 
 
 
Cách Tạo RSS trong ASP.NET
  Trung bình: 3.2 (Đã có 61 lượt đánh giá)
   09/10/2008 12:00 AM

Chắc Các bạn đã từng nhìn thấy hoặc từng sử dụng chức năng RSS của một website. Bài viết này sẽ hướng dẫn các bạn làm thế nào để tạo một RSS cho một website, Thật Đơn giản. 

Trước hết, chúng ta tìm hiểu định nghĩa về RSS là gì.

RSS (Really Simple Syndication) là định dạng dữ liệu dựa theo chuẩn XML được sử dụng để chia sẻ và phát tán nội dung Web. Việc sử dụng các chương trình đọc tin (News Reader, RSS Reader hay RSS Feeds) sẽ giúp bạn luôn xem được nhanh chóng tin tức mới nhất

Mỗi tin dưới dạng RSS sẽ gồm : Tiêu đề, tóm tắt nội dung và đường dẫn nối đến trang Webchứa nội dung đầy đủ của tin.

Quay trở lại về chương trình. Trước hết, chúng ta sẽ tạo 2 struct để thể hiện kênh (channel) và nội dung. Về sau chỉ việc dùng 2 channel này để tạo các kênh và nội dung thông tin

Đây là struct cho một RSS Channel

public struct RssChannel {         
    public string Title;        
    public string Link;         
    public string Description;     
}

Còn đây là struct cho một RSS Item

public struct RssItem
{
    public string Title;
    public string Link;
    public string Description;
}

Sau đó chúng ta viết 2 methods để tạo channel và tạo các item trong channel như sau:

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

và Đây là code để tạo một item cho channel:

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

Sau đó ta lập một class để sinh ra RSS, ví dụ tên class là NewsRss, class này sẽ chứa 2 cái struct trên và cả 2 methods trên.

Code của class thì chỉ quan trọng cái constructor để tạo XmlDocument và một số methods nhằm tạo channel, add item, trả về

xml document:

public NewsRSS()
    {
        _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;
        }
    }

Về bây giờ ta tạo các instant của class này mà sử dụng thôi:

Ví dụ tạo rss document và tạo channel:

        NewsRSS rss = new NewsRSS();

        NewsRSS.RssChannel channel = new NewsRSS.RssChannel();

        channel.Title = "Zensoft Website";

        channel.Link = "http://zensoft.vn";

        channel.Description = "Website Chia xẻ Thông tin về CNTT.";

        rss.AddRssChannel(channel);

Ví dụ tạo rss item:

        NewsRSS.RssItem item = new NewsRSS.RssItem();

        item.Title = "Lập Trình";

        item.Link = "http://zensoft.vn/ShowCategory.aspx?ID=9";

        item.Description = "Các Bài Viết Hướng Dẫn về lập Trình";

        rss.AddRssItem(item);

Cuối cùng, write cái Rss trên thành Xml document ra Response object trại cái ASPX page tương tác với bên ngoài:

        Response.Clear();

        Response.ContentType = "text/xml";

        Response.Write(rss.RssDocument);

        Response.End();

Các Bạn có thể download mã nguồn tại đây.


Gửi bởi: ngocdv
Lượt xem: 12761

 
Admin123 16/10/08 09:46 AM
Hay quá anh ạ, em cũng đang cần
cảm ơn anh nhiều!

phap 23/10/08 10:25 PM
hihhihi
không biết gì cả

tojino 11/11/08 09:42 PM
cảm ơn bạn nhiều lắm, tớ cũng đang cần ^^

star 22/11/08 02:35 PM
Cảm ơn bạn. Mình cũng rất cần cái đó. Bạn có thể cho mình hỏi thêm : nếu muốn tạo file RSS không phải cố định như bạn mà ta sẽ nhập vào từ textbox chẳng hạn. Sau đó bạn sẽ lưu file đó và nó sẽ tự đưa vào chủ đề thích hợp cho bạn chẳng hạn thì làm thế nào?

star47 22/11/08 02:48 PM
cảm ơn bạn nhiều. Bạn có biết cách nào mà tạo file rss động tức mình không gán trực tiếp mà nhập thông tin đó. Khi nhập xong thì nó sẽ tự động đưa bài viết vào từng chủ đề không?
Nếu có thể bạn chỉ thêm cho mình cái đó với. 

Lê Anh Tân 27/11/08 04:25 PM
Really good, những gì mà dân amatơ như tui đây đang rất cần thiết.

trucnguyen 15/12/08 03:58 PM
Bài viết bạn khá hay, thanks

Phạm văn Phong 29/12/08 09:51 AM
Anh ạ!
Em đã hiểu phần nào về RSS qua bài viết của anh. Nhưng em không hiểu, nếu em lấy từng tin trong một dang mục giống trang của mình thì em có phải truy vấn trong database ra không a. nếu không thì sao em có thể trình bầy một tin giống site của mình ạ!

phongtn 29/12/08 10:02 AM
Anh ơi!
Em muốn lấy nội dung động như trang zensoft.vn thì làm thế nào ạ!

phucnd 01/01/09 10:59 PM
Mình cũng hỏi hư câu trên:
Trong này hướng dẫn làm RSS nhưng mình muốn lấy contents động như của trang Zensoft này thì làm thế nào?

Minh 16/01/09 12:25 PM
Vậy mình muốn hiển thi thêm ngày đăng nữa thì làm thế nào??

ngocdv 02/03/09 11:25 PM
- Muốn lấy nội dung động thì bạn chỉ cần kết nối với CSDL, dung một vòng lặp để add thêm các channel và các item nữa.
- Còn muốn thêm ngày đăng nữa thì ta tạo thêm một thuộc tính có tên là NgayDang nữa là okie!

Hix 28/03/09 06:37 AM
Hix.Cac pac pro wa.e chua du trih de hieu het nen chua co j dong gop cho people.Nhug bai viet kha day du va chi tiet.Xin cam on tac gia.e cug dag hoc lap trinh Web.Hi vong co the nhah chong hoi nhap voi world.

thanh_hoai0802 12/04/09 12:32 PM
vay Pac nao co the cho biet cach lay tin rss vao trang áp ko? cho e voi xin cam on

Phóng 28/04/09 09:52 AM
Cảm ơn bạn NgocDV rất nhiều, bài viết của bạn rất hay và rất cơ bản. Nếu các bạn muốn phát triển thêm thì rất dễ dàng, mình nghĩ cách trình bày bạn rất dễ hiểu.

basquang 13/05/09 10:36 AM
Cám ơn bạn, rất hay

dathm 26/05/09 01:35 AM
Cảm ơn anh vì bài viết rất bổ ích.Nhân tiện đây cho em đc hỏi làm thế nào đưa Ajax Tooltip vào web như trong zensoft?Mong anh giúp đỡ.nếu có thể anh gửi demo theo địa chỉ mail của em đc không ạ.Thanks anh !

sondt 26/05/09 09:03 PM
@dathm: chào bạn, để biết thêm về tooltip mà zensoft đã dùng bạn có thể tham khảo tại trang

http://www.walterzorn.com/tooltip/tooltip_e.htm


thanh_hoai0802 27/05/09 06:16 PM
Pac N có thể hướng dẫn thêm cách láy nội dung động kô? ngôn ngữ C# e kô rành lắm. E đang làm đồ án về web RSS nên rất cần. Pac giúp e với nhé, e rất cám ơn! 

khoa 25/06/09 07:15 PM
các pác có thể chỉ em cách viết RSS trong ASP.NET mà ngôn ngữ là VB(visual basic) không!
nếu có code thì càng tốt!

cảm ơn các pác truớc nha!

diemhong 19/07/09 09:06 AM
hay quá cảm ơn bạn nhen..

diemhong 19/07/09 09:11 AM
có ai biết làm cái đánh giá sản phẩm ko?đánh giá bằng dấu Sao hay cái bình chọn giống như lúc thăm dò ý kiến..thank các bạn nhen.

diemhong 31/07/09 08:13 PM
ko ai giúp mình nhỉ

Xuhan.Do 17/08/09 09:59 AM
thanks for your support.

Hùng 11/12/09 10:32 AM
sao về chạy không nổi,down code về không chạy gì?

chieuhado 21/01/10 11:35 AM
Em vẫn lơ tơ mơ lắm ạ !!
You cho mình hỏi có phải đây là page để nhập tin tức từ các trang khác và link đến trang có thông tin đó hay để tìm thông tin mới trên các website khác vậy you
______________________________

[URL=http://ungvien.com.vn/employer/main.html]tuyen dung[/URL]| [URL=http://ungvien.com.vn]tim viec[/URL]|[URL=http://ungvien.com.vn]viec lam[/URL]

Mr Tran 11/06/10 03:15 AM
trước tiên mình xin cảm ơn bạn vì đoạn code tạo rss, mình đã tải về và dùng rất hiệu quả.
Bạn có thể giúp mình làm thêm cái logo giống bên dantri.com.vn được không?
gửi qua email cho mình nha. Cảm ơn bạn rất nhiều.
Chúc website của bạn ngày càng phát triển và có nhiều bài viết ý nghĩa khác
thân ái

Anh Pha 01/05/13 10:55 PM
Mình cũng vừa nghiên cứu vấn đề này, nhưng mình viết cho MVC 3, các bạn tham khảo RSS của mình nhé! Sinh tự động từ Cơ sở dữ liệu http://giasualpha.com/rss/giasu

Quảng cáo Hải Phòng
Quảng cáo Hải Phòng
NHẬN XÉT CỦA BẠN
Trung bình: 3.2   
Kiểu gõ: Off Telex VNI VIQR Tổng hợp (Telex, Vni, Viqr)
Họ Tên:
Hòm thư:
Nội Dung:
Số ký tự còn lại: 3500