Partager via


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

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, consultez 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

Référence

Attribute

Elements

Concepts

Requêtes de base (LINQ to XML)

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

Opérations de projection