Filtern nach Elementnamen (LINQ to XML)

Wenn Sie eine Methode aufrufen, die eine IEnumerable<T> von XElement zurückgibt, können Sie eine Filterung nach Elementnamen vornehmen.

Beispiel: Abrufen von nach einem angegebenen Namen gefilterten Nachfolgerelementen

In diesem Beispiel wird eine Auflistung mit Nachfolgerelementen abgerufen, die gefiltert wird, damit sie nur die Nachfolgerelemente mit dem angegebenen Namen enthält.

In diesem Beispiel wird das XML-Dokument XML-Beispieldatei: Typische Bestellung verwendet.

XElement po = XElement.Load("PurchaseOrder.xml");
IEnumerable<XElement> items =
    from el in po.Descendants("ProductName")
    select el;
foreach(XElement prdName in items)
    Console.WriteLine(prdName.Name + ":" + (string) prdName);
Dim po As XElement = XElement.Load("PurchaseOrder.xml")
Dim items As IEnumerable(Of XElement) = _
    From el In po...<ProductName> _
    Select el
For Each prdName As XElement In items
    Console.WriteLine(prdName.Name.ToString & ":" & prdName.Value)
Next

Dieses Beispiel erzeugt die folgende Ausgabe:

ProductName:Lawnmower
ProductName:Baby Monitor

Die anderen Methoden, die eine IEnumerable<T> von XElement-Auflistungen zurückgeben, folgen dem gleichen Muster. Ihre Signaturen entsprechen denen von Elements und Descendants. Im Folgenden finden Sie eine vollständige Liste der Methoden, die gleiche Methodensignaturen besitzen:

Beispiel: Abrufen aus XML-Daten in einem Namespace

Im folgenden Beispiel wird dieselbe Abfrage für XML-Daten in einem Namespace gezeigt. Weitere Informationen finden Sie unter Übersicht über Namespaces.

In diesem Beispiel wird das XML-Dokument XML-Beispieldatei: Typische Bestellung in einem Namespace verwendet.

XNamespace aw = "http://www.adventure-works.com";
XElement po = XElement.Load("PurchaseOrderInNamespace.xml");
IEnumerable<XElement> items =
    from el in po.Descendants(aw + "ProductName")
    select el;
foreach (XElement prdName in items)
    Console.WriteLine(prdName.Name + ":" + (string)prdName);
Imports <xmlns:aw="http://www.adventure-works.com">

Module Module1
    Sub Main()
        Dim po As XElement = XElement.Load("PurchaseOrderInNamespace.xml")
        Dim items As IEnumerable(Of XElement) = _
            From el In po...<aw:ProductName> _
            Select el
        For Each prdName As XElement In items
            Console.WriteLine(prdName.Name.ToString & ":" & prdName.Value)
        Next
    End Sub
End Module

Dieses Beispiel erzeugt die folgende Ausgabe:

{http://www.adventure-works.com}ProductName:Lawnmower
{http://www.adventure-works.com}ProductName:Baby Monitor

Siehe auch