Leer en inglés

Compartir a través de


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.

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);

En este ejemplo se genera la siguiente salida:

XML
<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.

C#
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);

En este ejemplo se genera la siguiente salida:

XML
<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