功能結構 (LINQ to XML)
LINQ to XML 提供一種強大的方式,建立名稱為「功能建構」的 XML 項目。功能建構是在單一陳述式中建立 XML 樹狀結構的能力。
LINQ to XML 程式介面有數種主要功能可以使用功能結構:
XElement 建構函式會針對內容採用各種引數類型。 例如,您可以傳遞變成子項目的其他 XElement 物件。 您可以傳遞變成項目屬性的 XAttribute 物件。 或者,您可以傳遞轉換成字串的其他類物件型,然後變成項目的文字內容。
XElement 建構函式會採用 Object 類型的 params 陣列,讓您可以將任何數目的物件傳遞到建構函式。 這可讓您建立包含複雜內容的項目。
如果物件實作 IEnumerable<T>,系統列舉物件中的集合,並加入集合中的所有項目。 如果集合包含 XElement 或 XAttribute 物件,系統會個別加入集合中的每個項目。 這是非常重要的,因為這可讓您將 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>