Procédure : filtrer sur des noms d'éléments (LINQ to XML)
Mise à jour : November 2007
Lorsque vous appelez l'une des méthodes qui retournent IEnumerable<T> de collections XElement, vous pouvez filtrer sur le nom de l'élément.
Exemple
Cet exemple récupère une collection des descendants filtrée de sorte à contenir uniquement les descendants avec le nom spécifié.
Cet exemple utilise le document XML suivant : Exemple de fichier XML : Commande fournisseur typique (LINQ to XML).
XElement po = XElement.Load("PurchaseOrder.xml");
IEnumerable<XElement> items =
from el in po.Descendants("ProductName")
select el;
foreach(XElement prdName in items)
Console.WriteLine(prdName.Name + ":" + (string) prdName);
Dim po As XElement = XElement.Load("PurchaseOrder.xml")
Dim items As IEnumerable(Of XElement) = _
From el In po...<ProductName> _
Select el
For Each prdName As XElement In items
Console.WriteLine(prdName.Name.ToString & ":" & prdName.Value)
Next
Ce code génère la sortie suivante :
ProductName:Lawnmower
ProductName:Baby Monitor
Les autres méthodes qui retournent IEnumerable<T> de collections XElement suivent le même modèle. Leurs signatures sont semblables à Elements et Descendants. Voici la liste complète des méthodes qui ont des signatures de méthodes semblables :
L'exemple suivant illustre la même requête pour du code XML qui est dans un espace de noms. Pour plus d'informations, consultez Utilisation des espaces de noms XML.
Cet exemple utilise le document XML suivant : Exemple de fichier XML : Commande fournisseur typique dans un espace de noms.
XNamespace aw = "https://www.adventure-works.com";
XElement po = XElement.Load("PurchaseOrderInNamespace.xml");
IEnumerable<XElement> items =
from el in po.Descendants(aw + "ProductName")
select el;
foreach (XElement prdName in items)
Console.WriteLine(prdName.Name + ":" + (string)prdName);
Imports <xmlns:aw="https://www.adventure-works.com">
Module Module1
Sub Main()
Dim po As XElement = XElement.Load("PurchaseOrderInNamespace.xml")
Dim items As IEnumerable(Of XElement) = _
From el In po...<aw:ProductName> _
Select el
For Each prdName As XElement In items
Console.WriteLine(prdName.Name.ToString & ":" & prdName.Value)
Next
End Sub
End Module
Ce code génère la sortie suivante :
{https://www.adventure-works.com}ProductName:Lawnmower
{https://www.adventure-works.com}ProductName:Baby Monitor