Procedura: trovare un elemento con un elemento figlio specifico

In questo argomento viene illustrato come trovare un determinato elemento che include un elemento figlio con un valore specifico.

Esempio

Nell'esempio viene ricercato l'elemento Test contenente un elemento figlio CommandLine con valore "Examp2.EXE".

Nell'esempio viene utilizzato il seguente documento XML: File XML di esempio: configurazione di test (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

L'output del codice è il seguente:

0002
0006

Si noti che nella versione Visual Basic di questo esempio vengono utilizzate la proprietà asse figlio XML, la proprietà asse attributo XML e la proprietà valore XML.

Nell'esempio seguente è illustrata la stessa query per XML in uno spazio dei nomi. Per ulteriori informazioni, vedere Utilizzo degli spazi dei nomi XML.

Nell'esempio viene utilizzato il seguente documento XML: File XML di esempio: configurazione di test in uno spazio dei nomi

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

L'output del codice è il seguente:

0002
0006

Vedere anche

Riferimenti

Attribute

Elements

Concetti

Query di base (LINQ to XML)

Cenni preliminari sugli operatori di query standard

Operazioni di proiezione