Freigeben über


So finden Sie ein Element mit einem bestimmten Attribut (LINQ to XML)

In diesem Artikel finden Sie Beispiele, wie Sie ein Element finden, dessen Attribut einen bestimmten Wert aufweist.

Beispiel: Suchen eines Elements, dessen Attribut einen bestimmten Wert aufweist

Das folgende Beispiel zeigt, wie Sie das Address-Element mit einem Type-Attribut mit dem Wert "Abrechnung" finden. Das Beispiel verwendet XML-Dokument Beispiel-XML-Datei: Typische Bestellung.

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

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Beispiel: Suchen eines Elements in XML, das sich in einem Namespace befindet

Das folgende Beispiel zeigt die gleiche Abfrage, aber für XML, das in einem Namespace liegt. Es wird das XML-Dokument XML-Beispieldatei: Typische Bestellung in einem Namespace verwendet.

Weitere Informationen zu Namespaces finden Sie unter der Übersicht der Namespaces.

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

Dieses Beispiel erzeugt die folgende Ausgabe:

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

Weitere Informationen