Cómo buscar un elemento con un atributo específico (LINQ to XML)
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.
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:
<Address Type="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
El siguiente ejemplo muestra la misma consulta, pero en un XML que se encuentra en un espacio de nombres. Usa el documento de XML Archivo XML de ejemplo: Pedido de compra común en un espacio de nombres.
Para obtener más información sobre los espacios de nombres, consulte Información general sobre los espacios 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:
<aw:Address aw: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>
Consulte también
- Attribute
- Elements
- Información general sobre operadores de consulta estándar (C#)
- Operaciones de proyección (C#)
- Consultas básicas (LINQ a XML) (Visual Basic)
- Información general de operadores de consulta estándar (Visual Basic)
- Operaciones de Proyección (Visual Basic)