Partager via


Guide pratique pour rechercher des éléments descendants (LINQ to XML)

Cet article montre comment utiliser XPath et une requête LINQ to XML, en C# et Visual Basic, pour rechercher tous les éléments descendants qui ont un nom spécifique.

Exemple de recherche d’éléments descendants ayant un nom spécifique

Cet exemple montre comment utiliser une requête LINQ to XML et XPath pour rechercher tous les éléments descendants nommés Name dans le document XML Exemple de fichier XML : Plusieurs commandes fournisseur (LINQ to XML). L'expression XPath est //Name.

XDocument po = XDocument.Load("PurchaseOrders.xml");

// LINQ to XML query
IEnumerable<XElement> list1 = po.Root.Descendants("Name");

// XPath expression
IEnumerable<XElement> list2 = po.XPathSelectElements("//Name");

if (list1.Count() == list2.Count() &&
        list1.Intersect(list2).Count() == list1.Count())
    Console.WriteLine("Results are identical");
else
    Console.WriteLine("Results differ");
foreach (XElement el in list1)
    Console.WriteLine(el);
Dim po As XDocument = XDocument.Load("PurchaseOrders.xml")

' LINQ to XML query
Dim list1 As IEnumerable(Of XElement) = po...<Name>

' XPath expression
Dim list2 As IEnumerable(Of XElement) = po.XPathSelectElements("//Name")

If (list1.Count() = list2.Count() And _
        list1.Intersect(list2).Count() = list1.Count()) Then
    Console.WriteLine("Results are identical")
Else
    Console.WriteLine("Results differ")
End If
For Each el As XElement In list1
    Console.WriteLine(el)
Next

Cet exemple produit la sortie suivante :

Results are identical
<Name>Ellen Adams</Name>
<Name>Tai Yee</Name>
<Name>Cristian Osorio</Name>
<Name>Cristian Osorio</Name>
<Name>Jessica Arnold</Name>
<Name>Jessica Arnold</Name>

Voir aussi