Share via


So finden Sie ein Element mit einem bestimmten untergeordneten Element (LINQ to XML)

In diesem Artikel wird gezeigt, wie Sie ein Element finden, dessen untergeordnetes Element einen bestimmten Wert aufweist.

Beispiel: Suchen eines Elements, dessen untergeordnetes Element einen bestimmten Wert aufweist

Im Beispiel wird das Test Element gefunden, dessen CommandLine untergeordnetes Element den Wert "Examp2.EXE" aufweist. Im Beispiel wird das XML-Dokument Xml-Beispieldatei: Testkonfiguration verwendet.

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

Dieses Beispiel erzeugt die folgende Ausgabe:

0002
0006

Beachten Sie, dass die Visual Basic-Version dieses Beispiels die XML Child Axis-Eigenschaft, die XML Attribute Axis-Eigenschaft und die XML Value-Eigenschaft verwendet.

Beispiel: Suchen, wenn sich der XML-Code in einem Namespace befindet

Im folgenden Beispiel wird dasselbe wie zuvor ausgeführt, aber für XML, das sich in einem Namespace befindet. Im Beispiel wird das XML-Dokument Xml-Beispieldatei: Testkonfiguration in einem Namespace verwendet.

Weitere Informationen finden Sie unter Übersicht über Namespaces.

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

Dieses Beispiel erzeugt die folgende Ausgabe:

0002
0006

Siehe auch