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