次の方法で共有


属性の値を取得する方法 (LINQ to XML)

この記事では、属性の値を取得する方法について示します。 主に 2 つの方法があります。1 つは、XAttribute を目的の型にキャストする方法です。その後、明示的な変換演算子によって、要素または属性のコンテンツが指定した型に変換されます。 もう 1 つは、Value プロパティを使用する方法です。 ただし、通常はキャストがより適切な方法です。 属性を null 許容の値の型にキャストすると、存在しているかどうかが不明確な属性の値を取得する場合にコードをより簡単に記述できます。 この手法の例については、「要素の値を取得する方法」を参照してください。

例: 属性の値を取得するためにキャストを使用する

C# で属性の値を取得するには、XAttribute オブジェクトを目的の型にキャストします。 Visual Basic では、統合属性プロパティを使用して値を取得できます。

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)

この例を実行すると、次の出力が生成されます。

<Root Attr="abcde" />
abcde

例: 名前空間にある XML からの取得にキャストを使用する

属性が名前空間内にある場合にその属性の値を取得する方法を次の例に示します。 詳細については、「名前空間の概要」を参照してください。

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

この例を実行すると、次の出力が生成されます。

abcde

関連項目