Freigeben über


Vorgehensweise: Filtern nach Elementnamen (LINQ to XML)

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

Beispiel

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 in XML-Beispieldatei: Typischer Auftrag (LINQ to XML) 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

Dieser Code erzeugt die folgende Ausgabe:

ProductName:Lawnmower
ProductName:Baby Monitor

Die anderen Methoden, die eine IEnumerable 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:

Im folgenden Beispiel wird dieselbe Abfrage für XML in einem Namespace gezeigt. Weitere Informationen finden Sie unter Arbeiten mit XML-Namespaces.

In diesem Beispiel wird das XML-Dokument in XML-Beispieldatei: Typischer Auftrag in einem Namespace verwendet.

XNamespace aw = "https://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="https://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

Dieser Code erzeugt die folgende Ausgabe:

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

Siehe auch

Konzepte

LINQ to XML-Achsen