XML 属性軸プロパティ
更新 : 2007 年 11 月
XElement オブジェクトの属性の値、または XElement オブジェクトのコレクション内の最初の要素へのアクセスを提供します。
object.@attribute
-or-
object.@<attribute>
指定項目
.@
必ず指定します。属性軸プロパティの開始を示します。<
省略可能です。attribute が Visual Basic の有効な識別子でない場合に、属性の名前の開始を示します。attribute
必ず指定します。アクセスする属性の名前。名前の書式は [prefix:]name です。指定項目
説明
prefix
省略可能です。属性の XML 名前空間プレフィックス。Imports ステートメントを使用して定義されているグローバル XML 名前空間を指定する必要があります。
name
必ず指定します。ローカル属性名です。「宣言する XML 要素と属性の名前」を参照してください。
>
省略可能です。attribute が Visual Basic の有効な識別子でない場合に、属性の名前の終了を示します。
戻り値
属性の値を格納している文字列。
解説
XML 属性軸プロパティを使用して、XElement オブジェクトの属性の値に名前でアクセスできます。または、XElement オブジェクトのコレクション内の最初の要素にアクセスできます。属性値は名前で取得できます。または、新しい名前の前に @ 識別子を付けて指定することで、要素に新しい属性を追加できます。
@ 識別子を使用して XML 属性を参照すると、属性値は文字列として返され、Value プロパティを明示的に指定する必要はありません。
XML 属性の名前付け規則は、Visual Basic 識別子の名前付け規則とは異なります。Visual Basic 識別子として有効ではない名前を持つ XML 属性にアクセスするには、名前を山かっこ (< と >) で囲みます。
XML 名前空間
属性軸プロパティの名前には、Imports ステートメントを使用してグローバルに宣言された XML 名前空間プレフィックスだけを使用できます。XML 要素リテラル内でローカルに宣言されている XML 名前空間プレフィックスは使用できません。詳細については、「Imports ステートメント (XML 名前空間)」を参照してください。
使用例
次の例は、type という名前の XML 属性の値を、phone という名前の XML 要素のコレクションから取得する方法を示します。
' Topic: XML Attribute Axis Property
Dim phones As XElement = _
<phones>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</phones>
Dim phoneTypes As XElement = _
<phoneTypes>
<%= From phone In phones.<phone> _
Select <type><%= phone.@type %></type> _
%>
</phoneTypes>
Console.WriteLine(phoneTypes)
このコードは、次のテキストを表示します。
<phoneTypes>
<type>home</type>
<type>work</type>
</phoneTypes>
次の例は、XML 要素の属性を宣言によって XML の一部として作成する方法と、XElement オブジェクトのインスタンスに属性を追加することによって動的に作成する方法の両方を示しています。type 属性は宣言によって作成され、owner 属性は動的に作成されます。
Dim phone2 As XElement = <phone type="home">206-555-0144</phone>
phone2.@owner = "Harris, Phyllis"
Console.WriteLine(phone2)
このコードは、次のテキストを表示します。
<phone type="home" owner="Harris, Phyllis">206-555-0144</phone>
次の例では、山かっこを使用した構文によって、number-type という名前の XML 属性の値を取得します。この名前は、Visual Basic の有効な識別子ではありません。
Dim phone As XElement = _
<phone number-type=" work">425-555-0145</phone>
Console.WriteLine("Phone type: " & phone.@<number-type>)
このコードは、次のテキストを表示します。
Phone type: work
次の例では、ns を XML 名前空間プレフィックスとして宣言します。その後、この名前空間のプレフィックスを使用して XML リテラルを作成し、修飾名 "ns:name" を持つ最初の子ノードにアクセスします。
Imports <xmlns:ns = "http://SomeNamespace">
Class TestClass3
Shared Sub TestPrefix()
Dim phone = _
<ns:phone ns:type="home">206-555-0144</ns:phone>
Console.WriteLine("Phone type: " & phone.@ns:type)
End Sub
End Class
このコードは、次のテキストを表示します。
Phone type: home