Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Een veelvoorkomend patroon dat u in uw code gaat gebruiken, is door een asmethode aan te roepen en vervolgens een van de assen van de extensiemethode aan te roepen.
Er zijn twee assen met de naam die Elements een verzameling elementen retourneert: de XContainer.Elements methode en de Extensions.Elements methode. U kunt deze twee assen combineren om alle elementen van een opgegeven naam te vinden op een bepaalde diepte in de structuur.
Voorbeeld: Alle naamelementen ophalen
In dit voorbeeld worden XContainer.Elements alle Name elementen in alle Address elementen in alle PurchaseOrder elementen gebruikt en Extensions.Elements opgehaald.
In dit voorbeeld wordt een XML-bestand met het XML-voorbeelddocument gebruikt: Meerdere inkooporders.
XElement purchaseOrders = XElement.Load("PurchaseOrders.xml");
IEnumerable<XElement> names =
from el in purchaseOrders
.Elements("PurchaseOrder")
.Elements("Address")
.Elements("Name")
select el;
foreach (XElement e in names)
Console.WriteLine(e);
Dim purchaseOrders As XElement = XElement.Load("PurchaseOrders.xml")
Dim names As IEnumerable(Of XElement) = _
From el In purchaseOrders.<PurchaseOrder>.<Address>.<Name> _
Select el
For Each e As XElement In names
Console.WriteLine(e)
Next
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
<Name>Ellen Adams</Name>
<Name>Tai Yee</Name>
<Name>Cristian Osorio</Name>
<Name>Cristian Osorio</Name>
<Name>Jessica Arnold</Name>
<Name>Jessica Arnold</Name>
Dit werkt omdat een van de implementaties van de Elements as is als uitbreidingsmethode van IEnumerable<T> XContainer. XElement is afgeleid van XContainer, zodat u de Extensions.Elements methode kunt aanroepen op de resultaten van een aanroep naar de XContainer.Elements methode.
Voorbeeld: alle elementen op een bepaalde diepte ophalen
Soms wilt u alle elementen op een bepaalde elementdiepte ophalen wanneer er mogelijk geen tussenliggende voorouders zijn. In het volgende document wilt u bijvoorbeeld alle ConfigParameter elementen ophalen die onderliggende elementen van het Customer element zijn, maar niet het ConfigParameter onderliggende element van het Root element.
<Root>
<ConfigParameter>RootConfigParameter</ConfigParameter>
<Customer>
<Name>Frank</Name>
<Config>
<ConfigParameter>FirstConfigParameter</ConfigParameter>
</Config>
</Customer>
<Customer>
<Name>Bob</Name>
<!--This customer doesn't have a Config element-->
</Customer>
<Customer>
<Name>Bill</Name>
<Config>
<ConfigParameter>SecondConfigParameter</ConfigParameter>
</Config>
</Customer>
</Root>
Hiervoor kunt u de Extensions.Elements as als volgt gebruiken:
XElement root = XElement.Load("Irregular.xml");
IEnumerable<XElement> configParameters =
root.Elements("Customer").Elements("Config").
Elements("ConfigParameter");
foreach (XElement cp in configParameters)
Console.WriteLine(cp);
Dim root As XElement = XElement.Load("Irregular.xml")
Dim configParameters As IEnumerable(Of XElement) = _
root.<Customer>.<Config>.<ConfigParameter>
For Each cp As XElement In configParameters
Console.WriteLine(cp)
Next
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
<ConfigParameter>FirstConfigParameter</ConfigParameter>
<ConfigParameter>SecondConfigParameter</ConfigParameter>
Voorbeeld: Elementen ophalen voor XML die zich in een naamruimte bevinden
In het volgende voorbeeld ziet u dezelfde techniek voor XML die zich in een naamruimte bevindt. Zie het overzicht van naamruimten voor meer informatie.
In dit voorbeeld wordt het XML-voorbeeldbestand van het XML-document gebruikt: meerdere inkooporders in een naamruimte.
XNamespace aw = "http://www.adventure-works.com";
XElement purchaseOrders = XElement.Load("PurchaseOrdersInNamespace.xml");
IEnumerable<XElement> names =
from el in purchaseOrders
.Elements(aw + "PurchaseOrder")
.Elements(aw + "Address")
.Elements(aw + "Name")
select el;
foreach (XElement e in names)
Console.WriteLine(e);
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim purchaseOrders As XElement = XElement.Load("PurchaseOrdersInNamespace.xml")
Dim names As IEnumerable(Of XElement) = _
From el In purchaseOrders.<aw:PurchaseOrder>.<aw:Address>.<aw:Name> _
Select el
For Each e As XElement In names
Console.WriteLine(e)
Next
End Sub
End Module
In dit voorbeeld wordt de volgende uitvoer gegenereerd:
<aw:Name xmlns:aw="http://www.adventure-works.com">Ellen Adams</aw:Name>
<aw:Name xmlns:aw="http://www.adventure-works.com">Tai Yee</aw:Name>
<aw:Name xmlns:aw="http://www.adventure-works.com">Cristian Osorio</aw:Name>
<aw:Name xmlns:aw="http://www.adventure-works.com">Cristian Osorio</aw:Name>
<aw:Name xmlns:aw="http://www.adventure-works.com">Jessica Arnold</aw:Name>
<aw:Name xmlns:aw="http://www.adventure-works.com">Jessica Arnold</aw:Name>