Procédure : rechercher un élément avec un attribut spécifique
Mise à jour : November 2007
Cette rubrique montre comment rechercher un élément qui possède un attribut qui a une valeur spécifique.
Exemple
L'exemple montre comment rechercher l'élément Address qui possède un attribut Type avec la valeur « Billing ».
Cet exemple utilise le document XML suivant : Exemple de fichier XML : Commande fournisseur typique (LINQ to XML).
XElement root = XElement.Load("PurchaseOrder.xml");
IEnumerable<XElement> address =
from el in root.Elements("Address")
where (string)el.Attribute("Type") == "Billing"
select el;
foreach (XElement el in address)
Console.WriteLine(el);
Dim root As XElement = XElement.Load("PurchaseOrder.xml")
Dim address As IEnumerable(Of XElement) = _
From el In root.<Address> _
Where el.@Type = "Billing" _
Select el
For Each el As XElement In address
Console.WriteLine(el)
Next
Ce code génère la sortie suivante :
<Address Type="Billing">
<Name>Tai Yee</Name>
<Street>8 Oak Avenue</Street>
<City>Old Town</City>
<State>PA</State>
<Zip>95819</Zip>
<Country>USA</Country>
</Address>
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, voir 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.
XElement root = XElement.Load("PurchaseOrderInNamespace.xml");
XNamespace aw = "https://www.adventure-works.com";
IEnumerable<XElement> address =
from el in root.Elements(aw + "Address")
where (string)el.Attribute(aw + "Type") == "Billing"
select el;
foreach (XElement el in address)
Console.WriteLine(el);
Imports <xmlns:aw='https://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = XElement.Load("PurchaseOrderInNamespace.xml")
Dim address As IEnumerable(Of XElement) = _
From el In root.<aw:Address> _
Where el.@aw:Type = "Billing" _
Select el
For Each el As XElement In address
Console.WriteLine(el)
Next
End Sub
End Module
Ce code génère la sortie suivante :
<aw:Address aw:Type="Billing" xmlns:aw="https://www.adventure-works.com">
<aw:Name>Tai Yee</aw:Name>
<aw:Street>8 Oak Avenue</aw:Street>
<aw:City>Old Town</aw:City>
<aw:State>PA</aw:State>
<aw:Zip>95819</aw:Zip>
<aw:Country>USA</aw:Country>
</aw:Address>
Voir aussi
Concepts
Requêtes de base (LINQ to XML)
Vue d'ensemble des opérateurs de requête standard