Hämta värdet för ett attribut (LINQ till XML)

Den här artikeln visar hur du hämtar värdet för attribut. Det finns två huvudsakliga sätt: Du kan omvandla en XAttribute till önskad typ. Den explicita konverteringsoperatorn konverterar sedan innehållet i elementet eller attributet till den angivna typen. Du kan också använda egenskapen Value . Gjutning är dock i allmänhet det bättre tillvägagångssättet. Om du omvandlar attributet till en nullbar värdetyp är koden enklare att skriva när du hämtar värdet för ett attribut som kanske eller kanske inte finns. Exempel på den här tekniken finns i Hämta värdet för ett element.

Exempel: Använd en cast för att hämta värdet för ett attribut

Om du vill hämta värdet för ett attribut i C#, omvandlar XAttribute du objektet till önskad typ. I Visual Basic kan du använda egenskapen integrerat attribut för att hämta värdet.

XElement root = new XElement("Root",
                    new XAttribute("Attr", "abcde")
                );
Console.WriteLine(root);
string str = (string)root.Attribute("Attr");
Console.WriteLine(str);
Dim root As XElement = <Root Attr="abcde"/>
Console.WriteLine(root)
Dim str As String = root.@Attr
Console.WriteLine(str)

Det här exemplet genererar följande utdata:

<Root Attr="abcde" />
abcde

Exempel: Använd en cast för att hämta från XML som finns i ett namnområde

I följande exempel visas hur du hämtar värdet för ett attribut om attributet finns i ett namnområde. Mer information finns i Översikt över namnområden.

XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
                    new XAttribute(aw + "Attr", "abcde")
                );
string str = (string)root.Attribute(aw + "Attr");
Console.WriteLine(str);
Imports <xmlns:aw="http://www.adventure-works.com">

Module Module1
    Sub Main()
        Dim root As XElement = <aw:Root aw:Attr="abcde"/>
        Dim str As String = root.@aw:Attr
        Console.WriteLine(str)
    End Sub
End Module

Det här exemplet genererar följande utdata:

abcde

Se även