Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
In diesem Artikel wird gezeigt, wie Sie mit XPathEvaluate alle Elemente suchen, die ein bestimmtes Attribut (unabhängig vom Wert) haben, und wie Sie LINQ to XML Abfrage verwenden, um dasselbe zu tun.
Beispiel: Suchen aller Elemente mit dem Select Attribut
Im folgenden Beispiel wird eine XML-Struktur erstellt und dann die Elemente gefunden, die das Select Attribut aufweisen.
Der XPath-Ausdruck lautet ./*[@Select].
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);
Dim doc As XElement = _
<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
Dim list1 As IEnumerable(Of XElement) = _
From el In doc.Elements() _
Where el.@Select <> Nothing _
Select el
' XPath expression
Dim list2 As IEnumerable(Of XElement) = DirectCast(doc.XPathEvaluate _
("./*[@Select]"), IEnumerable).Cast(Of XElement)()
If list1.Count() = list2.Count() And _
list1.Intersect(list2).Count() = list1.Count() Then
Console.WriteLine("Results are identical")
Else
Console.WriteLine("Results differ")
End If
For Each el As XElement In list1
Console.WriteLine(el)
Next
Dieses Beispiel erzeugt die folgende Ausgabe:
Results are identical
<Child2 Select="true">2</Child2>
<Child4 Select="true">4</Child4>