Funktionale Konstruktion (LINQ to XML)
LINQ to XML bietet mit der funktionalen Konstruktion eine leistungsfähige Möglichkeit zur Erstellung von XML-Elementen. Eine funktionale Konstruktion ermöglicht Ihnen das Erstellen einer XML-Struktur in einer einzelnen Anweisung.
In der funktionalen Konstruktion werden mehrere wichtige Features der LINQ to XML-Programmierschnittstelle verwendet:
- Der XElement-Konstruktor akzeptiert verschiedene Argumentarten als Inhalt. So können Sie z. B. ein anderes XElement-Objekt übergeben, das zu einem untergeordneten Element wird. Sie können auch ein XAttribute-Objekt übergeben, das zu einem Attribut des Elements wird. Oder Sie übergeben ein beliebiges anderes Objekt, das in eine Zeichenfolge konvertiert wird und zum Textinhalt des Elements wird.
- Der XElement-Konstruktor verwendet ein
params
-Array vom Typ Object, sodass Sie beliebig viele Objekte an den Konstruktor übergeben können. Auf diese Weise können Sie ein Element erstellen, das über komplexen Inhalt verfügt. - Wenn ein Objekt eine IEnumerable<T> implementiert, wird die Auflistung im Objekt aufgezählt, und alle Elemente in der Auflistung werden hinzugefügt. Wenn die Auflistung XElement-Objekte oder XAttribute-Objekte enthält, wird jedes Element in der Auflistung getrennt hinzugefügt. Dies ist wichtig, da Sie auf diese Weise die Ergebnisse einer LINQ-Abfrage an den Konstruktor übergeben können.
Beispiel: XML-Struktur erstellen
Mithilfe der funktionalen Konstruktion können Sie Code schreiben, um eine XML-Struktur zu erstellen. Es folgt ein Beispiel:
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")
)
)
);
Beispiel: XML-Struktur mithilfe von LINQ-Abfrageergebnissen erstellen
Diese Features ermöglichen es Ihnen auch, Code zu schreiben, der die Ergebnisse von LINQ-Abfragen verwendet, wenn Sie wie im folgenden Beispiel eine XML-Struktur erstellen:
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);
In Visual Basic wird dasselbe durch XML-Literale bewerkstelligt:
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)
Dieses Beispiel erzeugt die folgende Ausgabe:
<Root>
<Child>1</Child>
<Child>2</Child>
<Element>3</Element>
<Element>4</Element>
<Element>5</Element>
</Root>