Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du hämtar ett enda attribut för ett element, med tanke på attributnamnet. Detta är användbart för att skriva frågeuttryck där du vill hitta ett element som har ett visst attribut.
Metoden Attribute för XElement klassen returnerar XAttribute med det angivna namnet.
Exempel: Hämta attributvärden med tanke på element- och attributnamnen
I följande exempel används XElement metoden för att skapa ett element med namnet PhoneNumbers. Den hittar sedan alla underordnade element med namnet Phone och använder Attribute för varje metod för att hämta och mata ut värdet för attributet med namnet type:
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
Det här exemplet genererar följande utdata:
home
work
Exempel: Hämta ett attributvärde med en cast
Du kan hämta värdet för ett attribut genom att casta det, precis som med XElement objekt. Följande exempel visar detta:
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
Det här exemplet genererar följande utdata:
home
work
LINQ till XML tillhandahåller explicita cast-operatorer för XAttribute klassen till string, bool, bool?, int, int?, longulonguintuint?long?, ulong?, float?double?decimal?doubleDateTimedecimalfloat, DateTime?, TimeSpan, TimeSpan?, GUIDoch .GUID?
Exempel: Casta för ett attribut i ett namnområde
I följande exempel visas samma kod för ett attribut som finns i ett namnområde. Mer information finns i Översikt över namnområden.
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
Det här exemplet genererar följande utdata:
home
work