程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> 使用linq to xml快速創建自己的Rss

使用linq to xml快速創建自己的Rss

編輯:關於.NET

首先引用網絡上不知道是誰的一段文字來講述下什麼是linq to xml 如果已 經熟悉的就直接跳過這段:

LINQ to XML 是一種啟用了 LINQ 的內存 XML 編程接口,使用它,可以在 .NET Framework 編程語言中處理 XML。

它將 XML 文檔置於內存中,這一點很像文檔對象模型 (DOM)。 您可以 查詢和修改 XML 文檔,修改之後,可以將其另存為文件,也可以將其序列化然 後通過網絡發送。 但是,LINQ to XML 與 DOM 不同: 它提供一種新的對象模 型,這是一種更輕量的模型,使用也更方便,這種模型利用了 Visual C# 2008 在語言方面的改進。

LINQ to XML 最重要的優勢是它與 Language- Integrated Query (LINQ) 的集成。 由於實現了這一集成,因此,可以對內存 XML 文檔編寫查詢,以檢索元素和屬性的集合。 LINQ to XML 的查詢功能在功 能上(盡管不是在語法上)與 XPath 和 XQuery 具有可比性。 Visual C# 2008 集成 LINQ 後,可提供更強的類型化功能、編譯時檢查和改進的調試器支持。

通過將查詢結果用作 XElement 和 XAttribute 對象構造函數的參數, 實現了一種功能強大的創建 XML 樹的方法。 這種方法稱為“函數構造 ”,利用這種方法,開發人員可以方便地將 XML 樹從一種形狀轉換為另一 種形狀。

LINQ to XML 提供了改進的 XML 編程接口,這一點可能與 LINQ to XML 的 LINQ 功能同樣重要。 通過 LINQ to XML,對 XML 編程時,您 可以實現任何預期的操作,包括:

· 從文件或流加載 XML。

· 將 XML 序列化為文件或流。

· 使用函數構 造從頭開始創建 XML。

· 使用類似 XPath 的軸查詢 XML。

· 使用 Add、Remove、ReplaceWith 和 SetValue 等方法對內 存 XML 樹進行操作。

· 使用 XSD 驗證 XML 樹。

· 使用這些功能的組合,可將 XML 樹從一種形狀轉換為另一種 形狀。

好了,我開始廢話,首先說一下呢,我技術平平,寫出來的文章 自然也是不怎麼高水平的,但是都是我自己實際項目中總結出來的。

現 在言歸正傳說我們的正題

首先我們創建一個新窗體,這裡以我的網站為 例,我們起名叫Rss.aspx

創建完成後,如果Rss數據源是XML實際文檔, 就跳過下面一步,如果Rss數據源是aspx文件

請在創建完新頁面後切換到 源視圖

保留這一行:

<%@ Page Language="C#" AutoEventWireup="true" CodeFile="Rss.aspx.cs" Inherits="Rss" %>

其余的html代碼全部刪除

然後 在cs裡創建方法createRss()

具體看代碼和注釋:

public void createRss()
  {
    //首先從數據庫裡讀出所需要的 數據
    XXXXContext bd = new XXXXContext();
    var sq = from p in bd.news orderby p.ID descending select new { p.ID, p.title,p.cont, p.in_date,p.n_type };
    //開始創建xml 對於 Rss的規范我這裡不再啰嗦了,不明白的可以去網上查一下
    //下 面這一部分為xml裡的聲明部分,從foreach開始循環item,把sq的數據循環寫入 xml
    XElement contacts = new XElement("rss", new XAttribute("version", "2.0"),
           new XElement("channel",
           new XElement("title", "半途的Rss"),
             new XElement("link", "http://www.bantool.cn"),
            new XElement("description", "C#,linq,vs2008"),
             new XElement("language", "zh_cn"),
           new XElement ("copyright", "Copyright 2008 bantool"),
             new XElement("webMaster", "[email protected]")));
     //這裡開始循環寫數據
    foreach (var p in sq)
    {
       contacts.Element("channel").Add(new XElement ("item",
               new XElement ("title", p.title),
               new XElement("link", "http://www.bantool.cn/news" + p.ID + ".bantool"),
               new XElement("description", p.cont),
                new XElement("category", p.n_type),
                new XElement("pubDate", p.in_date)));
    }
    //這裡開始操作xml是寫入具體的xml文件還是直接輸 出
    //如果是寫入文件的話用這個
     //contacts.Save("文件路徑");
    //如果是輸出的諙 ,
    //先設好輸出的類型"text/xml"
     Response.ContentType = "text/xml";
    using (XmlWriter writer = new XmlTextWriter(Response.OutputStream, Encoding.UTF8))
      //用contacts的WriteTo方法來寫
       contacts.WriteTo(writer);
    //這樣就OK啦
}   

好了,這個樣子就完成了,看我們的linq多麼強大!呵呵

如果有錯誤還請大家指正,不明白的地方請提出來大家討論

演示 地址:http://www.bantool.cn/Rss.aspx

文章來 源:http://www.bantool.cn/news33.bantool

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved