Cómo buscar un elemento con un atributo específico (LINQ to XML)
Artículo
En este artículo se proporcionan ejemplos de cómo buscar un elemento cuyo atributo tiene un valor específico.
Ejemplo: Buscar un elemento cuyo atributo tiene un valor específico
En el ejemplo siguiente se muestra cómo buscar el elemento Address que tiene un atributo Type con un valor de "Billing". En el ejemplo se usa el documento XML archivo XML de ejemplo: pedido de compra típico.
C#
XElement root = XElement.Load("PurchaseOrder.xml");
IEnumerable<XElement> address =
from el in root.Elements("Address")
where (string)el.Attribute("Type") == "Billing"select el;
foreach (XElement el in address)
Console.WriteLine(el);
Dim root As XElement = XElement.Load("PurchaseOrder.xml")
Dim address As IEnumerable(Of XElement) = _
From el In root.<Address> _
Where el.@Type = "Billing" _
Select el
For Each el As XElement In address
Console.WriteLine(el)
Next
En este ejemplo se genera la siguiente salida:
XML
<AddressType="Billing"><Name>Tai Yee</Name><Street>8 Oak Avenue</Street><City>Old Town</City><State>PA</State><Zip>95819</Zip><Country>USA</Country></Address>
Ejemplo: Buscar un elemento en XML que se encuentra en un espacio de nombres
XElement root = XElement.Load("PurchaseOrderInNamespace.xml");
XNamespace aw = "http://www.adventure-works.com";
IEnumerable<XElement> address =
from el in root.Elements(aw + "Address")
where (string)el.Attribute(aw + "Type") == "Billing"select el;
foreach (XElement el in address)
Console.WriteLine(el);
Imports <xmlns:aw='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = XElement.Load("PurchaseOrderInNamespace.xml")
Dim address As IEnumerable(Of XElement) = _
From el In root.<aw:Address> _
Where el.@aw:Type = "Billing" _
Select el
For Each el As XElement In address
Console.WriteLine(el)
Next
End Sub
End Module
En este ejemplo se genera la siguiente salida:
XML
<aw:Addressaw:Type="Billing"xmlns:aw="http://www.adventure-works.com"><aw:Name>Tai Yee</aw:Name><aw:Street>8 Oak Avenue</aw:Street><aw:City>Old Town</aw:City><aw:State>PA</aw:State><aw:Zip>95819</aw:Zip><aw:Country>USA</aw:Country></aw:Address>
El origen de este contenido se puede encontrar en GitHub, donde también puede crear y revisar problemas y solicitudes de incorporación de cambios. Para más información, consulte nuestra guía para colaboradores.
Comentarios de .NET
.NET es un proyecto de código abierto. Seleccione un vínculo para proporcionar comentarios:
Únase a la serie de reuniones para crear soluciones de inteligencia artificial escalables basadas en casos de uso reales con compañeros desarrolladores y expertos.
Para buscar todos los descendientes que tienen un nombre determinado, es más fácil usar XContainer.Descendants que recorrer en iteración todos los descendientes.
Conozca las dos formas principales de obtener el valor de un elemento o atributo: convertir al tipo deseado o usar las propiedades XElement.Value y XAttribute.Value.
Recupere el primer elemento secundario que tiene un nombre especificado. Puede usar XContainer.Element en C#, y la notación del indizador de matriz en Visual Basic.