程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> 關於.NET >> Linq To Xml學習 - 1.LINQ to XML 概述

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

編輯:關於.NET

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 以及其使用方式。

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