Cómo buscar un elemento con un elemento secundario específico
Actualización: November 2007
Este tema muestra cómo encontrar un elemento en particular que tenga un elemento secundario con un valor específico.
Ejemplo
El ejemplo busca el elemento Test que tenga un elemento secundario CommandLine con el valor de "Examp2.EXE".
Este ejemplo utiliza el siguiente documento XML: Archivo XML de muestra: configuración de prueba (LINQ to XML). Archivo XML de muestra: configuración de prueba (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
Este código genera el siguiente resultado:
0002
0006
Observe que la versión de Visual Basic de este ejemplo usa la propiedad Axis secundaria para XML, la propiedad Axis del atributo XML y la propiedad Value de XML.
El siguiente ejemplo muestra la misma consulta sobre un XML que se encuentra en un espacio de nombres. Para obtener más información, vea Trabajar con espacios de nombres XML.
Este ejemplo utiliza el siguiente documento XML: Archivo XML de muestra: configuración de pruebas en un espacio de nombres. Archivo XML de muestra: configuración de pruebas en un espacio de nombres.
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
Este código genera el siguiente resultado:
0002
0006
Vea también
Conceptos
Consultas básicas (LINQ to XML)
Información general sobre operadores de consulta estándar