使用LINQ訪問XML

1. LINQ to XML 簡介web

 1.1. 使用 LINQ 訪問 XML
  • 更好的操做 XML
  • 支持語言集成查詢
  • 更方便、更快速、更簡單、更智能的XML API編程

 1.2. LINQ to XML
  • LINQ to XML 是一種啓用了 LINQ 的內存XML 編程接口,使用它,能夠在 .NET
Framework 編程語言中處理XML。
  • 它將 XML 文檔置於內存中,這一點很像文檔對象模型(DOM)。
  • 它提供一種新的對象模型,這是一種更輕量的模型,使用也更方便,這種模型利用
了Visual C# 2008 在語言方面的改進。asp.net

2. LINQ to XML 類編程語言

 2.1. XElement 類
  • 它表示一個 XML 元素
  • 能夠使用該類
    – 建立元素
    – 更改元素內容
    – 添加、更改或刪除子元素
    – 向元素中添加屬性
    – 以文本格式序列化元素內容
  • 能夠與 System.Xml 中的其餘類(例如XmlReader、XmlWriter 和
XslCompiledTransform)進行互操做。函數

 2.2. XAttribute 類
  • 屬性是與元素關聯的名稱/值對
  • XAttribute 類表示 XML 屬性
  • 屬性集合的LINQ 查詢表達式與元素集合的LINQ 查詢表達式看起來很是類似。spa

 2.3. XDocument 類
  • XDocument 類包含有效的 XML 文檔所需的信息。其中包括XML 聲明、處理指令和註釋。
  • 若是須要XDocument 類提供的特定功能,您只需建立XDocument 對象。在不少狀況下,能夠
直接使用Xelement。直接使用XElement 是一種比較簡單的編程模型。
  • XDocument 是從XContainer 派生的。所以,它能夠包含子節點。可是,XDocument 對象只能有
一個子XElement 節點。這反映了XML 標準,即在 XML 文檔中只能有一個根元素。.net

3. 使用LINQ to XMLcode

 3.1. XElement 類功能
  • 構造 XML 樹
  • 序列化 XML 樹
  • 經過軸方法檢索XML 數據
  • 查詢XML 樹
  • 修改 XML 樹orm

 3.2. 構造 XML 樹
  • 「函數構造」方法
    –經過將查詢結果用做 XElement 和 XAttribute對象構造函數的參數,實現了一種功能強大的
建立 XML 樹的方法。
    – 利用這種方法,開發人員能夠方便地將XML樹從一種形狀轉換爲另外一種形狀。
  • 分析字符串
  • 從文件加載對象

 3.3. 序列化 XML 樹
  • XML 樹能夠序列化爲
    –字符串
    – File
    – TextWriter
    – XmlWriter
    – XmlReader

 3.4. LINQ to XML 軸

 3.5. 查詢與轉換 XML 樹
  • 基本查詢
  • 使用LINQ查詢操做符查詢
  • 轉換XML 格式
  • 將集合、數據轉換成XML
  • 轉換成其它數據格式

 3.6. 修改 XML 樹
  • 內存中 XML 樹修改與函數構造
  • 向 XML 樹中添加元素、屬性和節點
  • 修改XML 樹中的元素、屬性和節點
  • 從XML 樹中移除元素、屬性和節點
  • 維護名稱/值對
  • 更改整個XML 樹的命名空間

4. 實現:生成RSS

NorthwindDataContext db = new NorthwindDataContext();
XElement rssRoot = new XElement("rss",
new XAttribute("version", "2.0"),
new XElement(「channel」,
new XElement("title", "My RSS Feed"),
new XElement("link", "http://weblogs.asp.net"),
new XElement("description", "Northwind Products Feed"),
from product in db.Products
orderby product.ProductName descending
select new XElement("item",
new XElement("title", product.ProductName),
new XElement("link", "p.aspx?id="+product.ProductID),
new XElement("description", "Supplier: " +
product.Supplier.CompanyName)
)
)
);
Response.Write(rssRoot.ToString());
相關文章
相關標籤/搜索