Vorgehensweise: Suchen nach Elementen mit bestimmten Attributen (XPath-LINQ to XML) (C#)How to: Find Elements with a Specific Attribute (XPath-LINQ to XML) (C#)

Es kann passieren, dass Sie alle Elemente ermitteln möchten, die ein bestimmtes Attribut besitzen.Sometimes you want to find all elements that have a specific attribute. Welchen Inhalt das Attribut hat, ist Ihnen dabei egal.You are not concerned about the contents of the attribute. Alleiniges Kriterium für die Auswahl ist dessen Existenz.Instead, you want to select based on the existence of the attribute.

Der XPath-Ausdruck lautet:The XPath expression is:

./*[@Select]

BeispielExample

Der folgende Code wählt nur die Elemente aus, die das Select-Attribut besitzen:The following code selects just the elements that have the Select attribute.

XElement doc = XElement.Parse(  
@"<Root>  
    <Child1>1</Child1>  
    <Child2 Select='true'>2</Child2>  
    <Child3>3</Child3>  
    <Child4 Select='true'>4</Child4>  
    <Child5>5</Child5>  
</Root>");  

// LINQ to XML query  
IEnumerable<XElement> list1 =  
    from el in doc.Elements()  
    where el.Attribute("Select") != null  
    select el;  

// XPath expression  
IEnumerable<XElement> list2 =  
    ((IEnumerable)doc.XPathEvaluate("./*[@Select]")).Cast<XElement>();  

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  
<Child2 Select="true">2</Child2>  
<Child4 Select="true">4</Child4>  

Siehe auchSee Also

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