Share via


LINQ to XML 概觀

更新: November 2007

XML 已被廣泛採用為格式化許多內容之資料的方式。例如,您可以在 Web、組態檔、Microsoft Office Word 檔案與資料庫中發現 XML。

LINQ to XML 是經過重新設計,用以進行 XML 程式設計的最新方法。它提供文件物件模型 (DOM) 的記憶體中文件修改能力,而且支援 LINQ 查詢運算式。雖然這些查詢運算式在語法上與 XPath 不同,但是它們會提供類似的功能。

LINQ to XML 開發人員

LINQ to XML 的目標為各種開發人員。對於只想要完成某些事情的一般開發人員而言,LINQ to XML 會提供類似 SQL 的查詢經驗,讓 XML 更容易。只要稍微研究,程式設計人員就可以學會如何以自己選擇的程式語言來撰寫簡潔而且功能強大的查詢。

專業開發人員可以使用 LINQ to XML 大量增加其產能。他們可以利用 LINQ to XML 撰寫更明確、更精簡而且功能更強大的較少程式碼。他們可以同時使用多個資料網域的查詢運算式。

何謂 LINQ to XML?

LINQ to XML 是一個以 LINQ 為基礎、記憶體中的 XML 程式發展介面,可讓您從 .NET Framework 程式設計語言內使用 XML。

LINQ to 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 整合提供的型別更強、編譯時期檢查功能,以及改善的偵錯工具支援。

LINQ to XML 的另一項優點是將查詢結果當做 XElementXAttribute 物件建構函式參數的功能,可提供建立 XML 樹狀結構的強大方法。此方法稱為「功能結構」,可讓開發人員將 XML 樹狀結構從一個組織結構輕鬆轉換為另一個組織結構。

例如,您可能有一個典型的 XML 採購訂單,如XML 範例檔:典型的採購訂單 (LINQ to XML) 中所述。您可以使用 LINQ to XML 執行下列查詢,以便在採購訂單中取得每個項目的零件編號屬行值:

IEnumerable<string> partNos =
    from item in purchaseOrder.Descendants("Item")
    select (string) item.Attribute("PartNumber");

在 Visual Basic 中,可以下列方式撰寫相同的查詢:

Dim partNos = _
    From item In purchaseOrder...<Item> _
    Select item.@PartNumber

另一個範例是,您可能會想要一份值大於 $100 之項目的清單 (以零件編號排序)。若要取得此資訊,您可以執行下列查詢:

IEnumerable<XElement> partNos =
    from item in purchaseOrder.Descendants("Item")
    where (int) item.Element("Quantity") *
        (decimal) item.Element("USPrice") > 100
    orderby (string)item.Element("PartNumber")
    select item;

在 Visual Basic 中,可以下列方式撰寫相同的查詢:

Dim partNos = _
    From item In purchaseOrder...<Item> _
    Where (item.<Quantity>.Value * _
           item.<USPrice>.Value) > 100 _
    Order By item.<PartNumber>.Value _
    Select item

除了這些 LINQ 功能以外,LINQ to XML 還提供了改善的 XML 程式發展介面。利用 LINQ to XML,您可以:

  • 從檔案或資料流載入 XML。

  • 將 XML 序列化為檔案或資料流。

  • 使用功能結構從頭開始建立 XML。

  • 使用類似 XPath 的座標軸查詢 XML。

  • 使用 AddRemoveReplaceWithSetValue 之類的方法管理記憶體中 XML 樹狀結構。

  • 使用 XSD 驗證 XML 樹狀結構。

  • 使用這些功能的組合,將 XML 樹狀結構從一個組織結構轉換為另一個組織結構。

建立 XML 樹狀結構

使用 LINQ to 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")
            )
        )
    );

在 Visual Basic 中,要建構 XML 樹狀結構的程式碼甚至更簡單,因為該程式碼使用 XML 常值:

Dim contacts = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone Type="Home">206-555-0144</Phone>
            <Phone Type="Work">425-555-0145</Phone>
            <Address>
                <Street1>123 Main St</Street1>
                <City>Mercer Island</City>
                <State>WA</State>
                <Postal>68042</Postal>
            </Address>
        </Contact>
    </Contacts>

Visual Basic 編譯器會將 XML 常值轉譯為 LINQ to XML 方法呼叫。

如需詳細資訊,請參閱建立 XML 樹狀結構

請參閱

概念

Visual Basic 中的 LINQ to XML 概觀

參考

System.Xml.Linq

其他資源

使用者入門 (LINQ to XML)

Visual Basic 中的 XML