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