Partager via


Comment trouver un élément avec un attribut spécifique (LINQ to XML)

Cet article fournit des exemples de recherche d’un élément dont l’attribut a une valeur spécifique.

Exemple : rechercher un élément dont l’attribut a une valeur spécifique

L'exemple suivant montre comment rechercher l'élément Address qui possède un attribut Type avec la valeur « Billing ». L’exemple utilise le document XML Exemple de fichier XML : bon de commande classique.

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

Cet exemple produit 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>

Exemple : Rechercher un élément en XML qui se trouve dans un espace de noms

L’exemple suivant montre la même requête, mais pour XML qui se trouve dans un espace de noms. Il utilise le document XML Exemple de fichier XML : bon de commande classique dans un espace de noms.

Pour plus d’informations sur les espaces de noms, consultez Vue d’ensemble des espaces de noms.

XElement root = XElement.Load("PurchaseOrderInNamespace.xml");
XNamespace aw = "http://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='http://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

Cet exemple génère la sortie suivante :

<aw:Address aw:Type="Billing" xmlns:aw="http://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