Vorgehensweise: Filtern nach einem Attribut (XPath-LINQ to XML) (C#)How to: Filter on an Attribute (XPath-LINQ to XML) (C#)

In diesem Thema wird gezeigt, wie Sie die Nachfolgerelemente mit einem bestimmten Namen und mit einem Attribut mit einem bestimmten Wert abrufen können.This topic shows how to get the descendant elements with a specified name, and with an attribute with a specified value.

Der XPath-Ausdruck lautet:The XPath expression is:

.//Address[@Type='Shipping']

BeispielExample

Dieses Beispiel sucht nach allen Nachfolgerelementen mit dem Namen Address und dem Type-Attribut mit dem Wert "Shipping".This example finds all descendants elements with the name of Address, and with a Type attribute with a value of "Shipping".

In diesem Beispiel wird das folgende XML-Dokument verwendet: Beispiel-XML-Datei: Mehrere Bestellungen (LINQ to XML).This example uses the following XML document: Sample XML File: Multiple Purchase Orders (LINQ to XML).

XDocument po = XDocument.Load("PurchaseOrders.xml");  

// LINQ to XML query  
IEnumerable<XElement> list1 =  
    from el in po.Descendants("Address")  
    where (string)el.Attribute("Type") == "Shipping"  
    select el;  

// XPath expression  
IEnumerable<XElement> list2 = po.XPathSelectElements(".//Address[@Type='Shipping']");  

if (list1.Count() == list2.Count() &&  
        list1.Intersect(list2).Count() == list1.Count())  
    Console.WriteLine("Results are identical");  
else  
    Console.WriteLine("Results differ");  
foreach (XElement el in list1)  
    Console.WriteLine(el);  

Dieses Beispiel erzeugt die folgende Ausgabe:This example produces the following output:

Results are identical  
<Address Type="Shipping">  
  <Name>Ellen Adams</Name>  
  <Street>123 Maple Street</Street>  
  <City>Mill Valley</City>  
  <State>CA</State>  
  <Zip>10999</Zip>  
  <Country>USA</Country>  
</Address>  
<Address Type="Shipping">  
  <Name>Cristian Osorio</Name>  
  <Street>456 Main Street</Street>  
  <City>Buffalo</City>  
  <State>NY</State>  
  <Zip>98112</Zip>  
  <Country>USA</Country>  
</Address>  
<Address Type="Shipping">  
  <Name>Jessica Arnold</Name>  
  <Street>4055 Madison Ave</Street>  
  <City>Seattle</City>  
  <State>WA</State>  
  <Zip>98112</Zip>  
  <Country>USA</Country>  
</Address>  

Siehe auchSee Also

LINQ to XML für XPath-Benutzer (C#)LINQ to XML for XPath Users (C#)