Linq To Xml學習 - 1.LINQ to XML 概述

作者: Q.Lee.lulu  來源: 博客園  發布時間: 2008-09-23 16:53  閱讀: 25789 次  推薦: 3   原文鏈接   [收藏]  

Linq To Xml學習 - 1.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 樹從一種形狀轉換為另一種形狀。

創建 XML 樹是否方便,這一點非常重要。 例如,若要創建一個小型 XML 樹,可以編寫以下 C# 代碼:

XElement contacts =
    new XElement("Contacts",
        new XElement("Contact",
            new XElement("Name", "Patrick Hines"),
            new XElement("Phone", "206-555-0144", 
                new XAttribute("Type", "Home")),
            new XElement("phone", "425-555-0145",
                new XAttribute("Type", "Work")),
            new XElement("Address",
                new XElement("Street1", "123 Main St"),
                new XElement("City", "Mercer Island"),
                new XElement("State", "WA"),
                new XElement("Postal", "68042")
            )
        )
    );

請注意,縮進用于構造 XML 樹的代碼可顯示基礎 XML 的結構。

直接使用 XML 元素

在使用 XML 編程時,主要關注的通常是 XML 元素,也可能關注屬性。 在 LINQ to XML 中,可以直接使用 XML 元素和屬性。 例如,可以執行以下操作:

  • 創建 XML 元素而根本不使用文檔對象。 當必須使用 XML 樹的片段時,這可簡化編程。

  • 直接從 XML 文件加載 T:System.Xml.Linq.XElement 對象。

  • T:System.Xml.Linq.XElement 對象序列化為文件或流。

使用 LINQ to XML 時,僅在文檔的根級別添加注釋或處理說明時,才需使用 XDocument 

名稱和命名空間的簡化處理

處理名稱、命名空間和命名空間前綴通常是 XML 編程的復雜部分。LINQ to XML 完全不需要處理命名空間前綴,從而簡化了名稱和命名空間。 可以輕松控制命名空間前綴。 但如果您決定不顯式控制命名空間前綴,則在序列化時,LINQ to XML 將會分配命名空間前綴(如果需要)或使用默認命名空間進行序列化。 如果使用默認命名空間,則生成的文檔中將沒有命名空間前綴。

LINQ to XML 也不需要用戶理解什么是 NameTable 以及其使用方式。

3
5
 
標簽:linq xml
 
 

文章列表

arrow
arrow
    全站熱搜
    創作者介紹
    創作者 大師兄 的頭像
    大師兄

    IT工程師數位筆記本

    大師兄 發表在 痞客邦 留言(0) 人氣()