Functionele constructie (LINQ naar XML)
LINQ naar XML biedt een krachtige manier om XML-elementen te maken die functionele constructie worden genoemd. Met functionele constructie kunt u in één instructie een XML-structuur maken.
Verschillende belangrijke functies van de LINQ naar XML-programmeerinterface worden gebruikt in functionele constructie:
- De XElement constructor gebruikt verschillende typen argumenten voor inhoud. U kunt bijvoorbeeld een ander XElement object doorgeven, dat een onderliggend element wordt. U kunt een XAttribute object doorgeven. Dit wordt een kenmerk van het element. U kunt ook elk ander type object doorgeven, dat wordt geconverteerd naar een tekenreeks en de tekstinhoud van het element wordt.
- De XElement constructor heeft een
params
matrix van het type Object, zodat u een willekeurig aantal objecten aan de constructor kunt doorgeven. Hiermee kunt u een element met complexe inhoud maken. - Als een object wordt geïmplementeerd IEnumerable<T>, wordt de verzameling in het object geïnventariseerd en worden alle items in de verzameling toegevoegd. Als de verzameling objecten bevat XElement , XAttribute wordt elk item in de verzameling afzonderlijk toegevoegd. Dit is belangrijk omdat u hiermee de resultaten van een LINQ-query kunt doorgeven aan de constructor.
Voorbeeld: Een XML-structuur maken
U kunt functionele constructie gebruiken om code te schrijven om een XML-structuur te maken. Hier volgt een voorbeeld:
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")
)
)
);
Voorbeeld: Een XML-structuur maken met LINQ-queryresultaten
Met deze functies kunt u ook code schrijven die gebruikmaakt van de resultaten van LINQ-query's wanneer u een XML-structuur maakt, zoals in het volgende voorbeeld:
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 wordt hetzelfde bereikt met letterlijke XML-waarden:
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)
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
<Root>
<Child>1</Child>
<Child>2</Child>
<Element>3</Element>
<Element>4</Element>
<Element>5</Element>
</Root>