Sdílet prostřednictvím


Gewusst wie: Filtern nach Elementnamen (LINQ to XML)

Aktualisiert: November 2007

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

Beispiel

In diesem Beispiel wird eine Auflistung der Nachfolgerelemente abgerufen, die so gefiltert wird, dass nur Nachfolgerelemente mit dem angegebenen Namen enthalten sind.

In diesem Beispiel wird das XML-Dokument in XML-Beispieldatei: Typischer Auftrag (LINQ to XML) verwendet. XML-Beispieldatei: Typischer Auftrag (LINQ to XML).

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<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:

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

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

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