共用方式為


功能結構 (LINQ to XML)

更新: November 2007

LINQ to XML 提供一種強大的方式,建立名稱為「功能結構」的 XML 項目。功能結構是在單一陳述式中建立 XML 樹狀結構的能力。

LINQ to XML 程式介面有數種主要功能可以使用功能結構:

  • XElement 建構函式會針對內容採用各種引數類型。例如,您可以傳遞變成子項目的其他 XElement 物件。您可以傳遞變成項目屬性的 XAttribute 物件。或者,您可以傳遞轉換成字串的其他類物件型,然後變成項目的文字內容。

  • XElement 建構函式會採用 Object 類型的 params 陣列,讓您可以將任何數目的物件傳遞到建構函式。這可讓您建立包含複雜內容的項目。

  • 如果物件實作 IEnumerable<T>,系統列舉物件中的集合,並加入集合中的所有項目。如果集合包含 XElementXAttribute 物件,系統會個別加入集合中的每個項目。這是非常重要的,因為這可讓您將 LINQ 查詢的結果傳遞到建構函式中。

這些功能可讓您撰寫程式碼來建立 XML 樹狀結構。以下是範例:

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

建立 XML 樹狀結構時,這些功能也可讓您撰寫使用 LINQ 查詢結果的程式碼,如下所示:

XElement srcTree = new XElement("Root",
    new XElement("Element", 1),
    new XElement("Element", 2),
    new XElement("Element", 3),
    new XElement("Element", 4),
    new XElement("Element", 5)
);
XElement xmlTree = new XElement("Root",
    new XElement("Child", 1),
    new XElement("Child", 2),
    from el in srcTree.Elements()
    where (int)el > 2
    select el
);
Console.WriteLine(xmlTree);

在 Visual Basic 中,相同的事情也可以透過 XML 常值達成。

Dim srcTree As XElement = _
    <Root>
        <Element>1</Element>
        <Element>2</Element>
        <Element>3</Element>
        <Element>4</Element>
        <Element>5</Element>
    </Root>
Dim xmlTree As XElement = _
    <Root>
        <Child>1</Child>
        <Child>2</Child>
        <%= From el In srcTree.Elements() _
            Where CInt(el) > 2 _
            Select el %>
    </Root>
Console.WriteLine(xmlTree)

這個範例會產生下列輸出:

<Root>
  <Child>1</Child>
  <Child>2</Child>
  <Element>3</Element>
  <Element>4</Element>
  <Element>5</Element>
</Root>

請參閱

概念

建立 XML 樹狀結構