Partager via


Procédure : rechercher un élément avec un élément enfant spécifique

Mise à jour : November 2007

Cette rubrique montre comment rechercher un élément particulier qui a un élément enfant avec une valeur spécifique.

Exemple

L'exemple recherche l'élément Test qui a un élément enfant CommandLine avec la valeur « Examp2.EXE ».

Cet exemple utilise le document XML suivant : Exemple de fichier XML : Configuration test (LINQ to XML).

XElement root = XElement.Load("TestConfig.xml");
IEnumerable<XElement> tests =
    from el in root.Elements("Test")
    where (string)el.Element("CommandLine") == "Examp2.EXE"
    select el;
foreach (XElement el in tests)
    Console.WriteLine((string)el.Attribute("TestId"));
Dim root As XElement = XElement.Load("TestConfig.xml")
Dim tests As IEnumerable(Of XElement) = _
    From el In root.<Test> _
    Where el.<CommandLine>.Value = "Examp2.EXE" _
    Select el
For Each el as XElement In tests
    Console.WriteLine(el.@TestId)
Next

Ce code génère la sortie suivante :

0002
0006

Notez que la version Visual Basic de cet exemple utilise la propriété axe d'enfant XML, la propriété axe d'attribut XML et la propriété valeur XML.

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 : Configuration test dans un espace de noms.

XElement root = XElement.Load("TestConfigInNamespace.xml");
XNamespace ad = "http://www.adatum.com";
IEnumerable<XElement> tests =
    from el in root.Elements(ad + "Test")
    where (string)el.Element(ad + "CommandLine") == "Examp2.EXE"
    select el;
foreach (XElement el in tests)
    Console.WriteLine((string)el.Attribute("TestId"));
Imports <xmlns='http://www.adatum.com'>

Module Module1
    Sub Main()
        Dim root As XElement = XElement.Load("TestConfigInNamespace.xml")
        Dim tests As IEnumerable(Of XElement) = _
            From el In root.<Test> _
            Where el.<CommandLine>.Value = "Examp2.EXE" _
            Select el
        For Each el As XElement In tests
            Console.WriteLine(el.@TestId)
        Next
    End Sub
End Module

Ce code génère la sortie suivante :

0002
0006

Voir aussi

Concepts

Requêtes de base (LINQ to XML)

Vue d'ensemble des opérateurs de requête standard

Opérations de projection

Référence

Attribute

Elements