Gewusst wie: Ermitteln eines Elements mit einem bestimmten untergeordneten Element
Aktualisiert: November 2007
In diesem Thema wird gezeigt, wie Sie nach einem bestimmten Element suchen können, das ein untergeordnetes Element mit einem bestimmten Wert besitzt.
Beispiel
Das Beispiel sucht nach dem Test-Element, das ein untergeordnetes CommandLine-Element mit dem Wert Examp2.EXE besitzt.
In diesem Beispiel wird das XML-Dokument in XML-Beispieldatei: Testkonfiguration (LINQ to XML) verwendet. XML-Beispieldatei: Testkonfiguration (LINQ to XML).
XElement root = XElement.Load("TestConfig.xml");
IEnumerable<XElement> tests =
from el in root.Elements("Test")
where (string)el.Element("CommandLine") == "Examp2.EXE"
select el;
foreach (XElement el in tests)
Console.WriteLine((string)el.Attribute("TestId"));
Dim root As XElement = XElement.Load("TestConfig.xml")
Dim tests As IEnumerable(Of XElement) = _
From el In root.<Test> _
Where el.<CommandLine>.Value = "Examp2.EXE" _
Select el
For Each el as XElement In tests
Console.WriteLine(el.@TestId)
Next
Dieser Code erzeugt die folgende Ausgabe:
0002
0006
Beachten Sie, dass von der Visual Basic-Version dieses Beispiels die Untergeordnete XML-Achseneigenschaft, die XML-Attribut Achseneigenschaft und die XML-Value-Eigenschaft verwendet werden.
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: Testkonfiguration in einem Namespace verwendet. XML-Beispieldatei: Testkonfiguration in einem Namespace.
XElement root = XElement.Load("TestConfigInNamespace.xml");
XNamespace ad = "http://www.adatum.com";
IEnumerable<XElement> tests =
from el in root.Elements(ad + "Test")
where (string)el.Element(ad + "CommandLine") == "Examp2.EXE"
select el;
foreach (XElement el in tests)
Console.WriteLine((string)el.Attribute("TestId"));
Imports <xmlns='http://www.adatum.com'>
Module Module1
Sub Main()
Dim root As XElement = XElement.Load("TestConfigInNamespace.xml")
Dim tests As IEnumerable(Of XElement) = _
From el In root.<Test> _
Where el.<CommandLine>.Value = "Examp2.EXE" _
Select el
For Each el As XElement In tests
Console.WriteLine(el.@TestId)
Next
End Sub
End Module
Dieser Code erzeugt die folgende Ausgabe:
0002
0006
Siehe auch
Konzepte
Einfache Abfragen (LINQ to XML)
Übersicht über Standardabfrageoperatoren