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 die Suche nach dem Address-Element mit dem Type-Attribut und dem Wert "Billing". Im Beispiel wird das XML-Dokument XML-Beispieldatei: Typische Bestellung verwendet.

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

Im folgenden Beispiel wird dieselbe Abfrage aber für XML in einem Namespace gezeigt. 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>

Siehe auch