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