Vorgehensweise: Abrufen eines einzelnen Attributs (LINQ to XML) (C#)How to: Retrieve a Single Attribute (LINQ to XML) (C#)

In diesem Thema wird die Vorgehensweise beim Abrufen eines einzelnen Attributs eines Elements anhand des Attributsnamens erläutert.This topic explains how to retrieve a single attribute of an element, given the attribute name. Diese Vorgehensweise eignet sich für das Schreiben von Abfrageausdrücken, mit denen Sie nach einem Element mit einem bestimmten Attribut suchen möchten.This is useful for writing query expressions where you want to find an element that has a particular attribute.

Die Attribute-Methode der XElement-Klasse gibt das XAttribute mit dem angegebenen Namen zurück.The Attribute method of the XElement class returns the XAttribute with the specified name.

BeispielExample

Im folgenden Beispiel wird die Attribute-Methode verwendet:The following example uses the Attribute method.

XElement cust = new XElement("PhoneNumbers",  
    new XElement("Phone",  
        new XAttribute("type", "home"),  
        "555-555-5555"),  
    new XElement("Phone",  
        new XAttribute("type", "work"),  
        "555-555-6666")  
);  
IEnumerable<XElement> elList =  
    from el in cust.Descendants("Phone")  
    select el;  
foreach (XElement el in elList)  
    Console.WriteLine((string)el.Attribute("type"));  

Dieses Beispiel ermittelt zuerst alle Nachfolger in der Struktur mit dem Namen Phone und dann das Attribut mit dem Namen type.This example finds all the descendants in the tree named Phone, and then finds the attribute named type.

Dieser Code erzeugt die folgende Ausgabe:This code produces the following output:

home  
work  

BeispielExample

Wenn Sie den Wert des Attributs abrufen möchten, können Sie es einfach genauso umwandeln, wie Sie es bei XElement-Objekten machen würden.If you want to retrieve the value of the attribute, you can cast it, just as you do for with XElement objects. Dies wird im folgenden Beispiel veranschaulicht:The following example demonstrates this.

XElement cust = new XElement("PhoneNumbers",  
    new XElement("Phone",  
        new XAttribute("type", "home"),  
        "555-555-5555"),  
    new XElement("Phone",  
        new XAttribute("type", "work"),  
        "555-555-6666")  
);  
IEnumerable<XElement> elList =   
    from el in cust.Descendants("Phone")  
    select el;  
foreach (XElement el in elList)  
    Console.WriteLine((string)el.Attribute("type"));  

Dieser Code erzeugt die folgende Ausgabe:This code produces the following output:

home  
work  

LINQ to XML bietet explizite Umwandlungsoperatoren für die Umwandlung der XAttribute-Klasse in string, bool, bool?, int, int?, uint, uint?, long, long?, ulong, ulong?, float, float?, double, double?, decimal, decimal?, DateTime, DateTime?, TimeSpan, TimeSpan?, GUID und GUID?. provides explicit cast operators for the XAttribute class to string, bool, bool?, int, int?, uint, uint?, long, long?, ulong, ulong?, float, float?, double, double?, decimal, decimal?, DateTime, DateTime?, TimeSpan, TimeSpan?, GUID, and GUID?.

BeispielExample

Das folgende Beispiel enthält denselben Code für ein Attribut, das sich in einem Namespace befindet.The following example shows the same code for an attribute that is in a namespace. Weitere Informationen finden Sie unter Working with XML Namespaces (C#) (Arbeiten mit XML-Namespaces (C#)).For more information, see Working with XML Namespaces (C#).

XNamespace aw = "http://www.adventure-works.com";  
XElement cust = new XElement(aw + "PhoneNumbers",  
    new XElement(aw + "Phone",  
        new XAttribute(aw + "type", "home"),  
        "555-555-5555"),  
    new XElement(aw + "Phone",  
        new XAttribute(aw + "type", "work"),  
        "555-555-6666")  
);  
IEnumerable<XElement> elList =  
    from el in cust.Descendants(aw + "Phone")  
    select el;  
foreach (XElement el in elList)  
    Console.WriteLine((string)el.Attribute(aw + "type"));  

Dieser Code erzeugt die folgende Ausgabe:This code produces the following output:

home  
work  

Siehe auchSee Also

LINQ to XML Axes (C#) (LINQ to XML-Achsen (C#))LINQ to XML Axes (C#)