Abrufen eines einzelnes Attributs (LINQ to XML)
In diesem Thema wird die Vorgehensweise beim Abrufen eines einzelnen Attributs eines Elements anhand des Attributsnamens erläutert. Diese Vorgehensweise eignet sich für das Schreiben von Abfrageausdrücken, mit denen Sie nach einem Element mit einem bestimmten Attribut suchen möchten.
Die Attribute-Methode der XElement-Klasse gibt das XAttribute mit dem angegebenen Namen zurück.
Beispiel: Abrufen von Attributwerten unter Angabe der Element- und Attributnamen
Im folgenden Beispiel wird die XElement-Methode verwendet, um ein Element mit dem Namen PhoneNumbers
zu erstellen. Anschließend findet es alle untergeordneten Elemente namens Phone
und verwendet für jedes die Attribute-Methode, um den Wert des Attributs mit dem Namen type
abzurufen und auszugeben:
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"));
Dim cust As XElement = <PhoneNumbers>
<Phone type="home">555-555-5555</Phone>
<Phone type="work">555-555-6666</Phone>
</PhoneNumbers>
Dim elList = From el In cust...<Phone>
For Each e As XElement In elList
Console.WriteLine(e.@type)
Next
Dieses Beispiel erzeugt die folgende Ausgabe:
home
work
Beispiel: Abrufen eines Attributwerts mit einer Umwandlung
Sie können den Wert eines Attributs abrufen, indem Sie ihn wie bei XElement-Objekten umwandeln. Dies wird im folgenden Beispiel veranschaulicht:
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"));
Dim cust As XElement = <PhoneNumbers>
<Phone type="home">555-555-5555</Phone>
<Phone type="work">555-555-6666</Phone>
</PhoneNumbers>
Dim elList As IEnumerable(Of XElement) = _
From el In cust...<Phone> _
Select el
For Each el As XElement In elList
Console.WriteLine(el.@type)
Next
Dieses Beispiel erzeugt die folgende Ausgabe:
home
work
LINQ to XML bietet explizite Umwandlungsoperatoren für die XAttribute-Klasse bis string
, bool
, bool?
, int
, int?
, uint
, uint?
, long
, long?
, ulong
, ulong?
, float
, float?
, double
, double?
, decimal
, decimal?
, DateTime
, DateTime?
, TimeSpan
, TimeSpan?
, GUID
und GUID?
.
Beispiel: Umwandlung für ein Attribut in einem Namespace
Das folgende Beispiel enthält denselben Code für ein Attribut, das sich in einem Namespace befindet. Weitere Informationen finden Sie unter Übersicht über Namespaces.
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"));
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim cust As XElement = _
<aw:PhoneNumbers>
<aw:Phone aw:type="home">555-555-5555</aw:Phone>
<aw:Phone aw:type="work">555-555-6666</aw:Phone>
</aw:PhoneNumbers>
Dim elList As IEnumerable(Of XElement) = _
From el In cust...<aw:Phone> _
Select el
For Each el As XElement In elList
Console.WriteLine(el.@aw:type)
Next
End Sub
End Module
Dieses Beispiel erzeugt die folgende Ausgabe:
home
work
Siehe auch
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für