Visual Basic における LINQ to XML の概要
更新 : 2007 年 11 月
Visual Basic では、XML リテラルと XML 軸プロパティを通して LINQ to XML をサポートします。これにより、Visual Basic コードでは、使い慣れた便利な構文を使用して XML を操作できます。XML リテラルを使用すると、コード内に XML を直接含めることができます。XML 軸プロパティは、XML リテラルの子ノード、子孫ノード、および属性へのアクセスを可能にします。詳細については、「XML リテラルの概要」および「Visual Basic での XML へのアクセス」を参照してください。
LINQ to XML は、統合言語クエリ (LINQ: Language-Integrated Query) を活用するように特別に設計されたインメモリ XML プログラミング API です。LINQ API を直接呼び出すこともできますが、XML リテラルの宣言と XML 軸プロパティへの直接的なアクセスは Visual Basic でのみ可能です。
メモ : |
---|
XML リテラルと XML 軸プロパティは、ASP.NET ページ内の宣言コードではサポートされません。Visual Basic の XML 機能を使用するには、ASP.NET アプリケーションの分離コード ページにコードを配置します。 |
XML の作成
Visual Basic で XML ツリーを作成する方法は 2 つあります。XML リテラルをコード内に直接宣言するか、LINQ API を使用してツリーを作成します。どちらの処理でも、XML ツリーの最終構造を反映するコードを記述できます。たとえば、次のコード例では、XML 要素が作成されます。
Dim contact1 As XElement = _
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
詳細については、「Visual Basic での XML の作成」を参照してください。
XML へのアクセスとナビゲーション
Visual Basic には、XML 構造体へのアクセスとナビゲーションを行うための XML 軸プロパティが用意されています。これらのプロパティを使用して XML 子要素の名前を指定することで、XML の要素と属性にアクセスできます。または、LINQ メソッドを明示的に呼び出して、要素と属性のナビゲーションおよび検索を実行することもできます。たとえば、次のコード例では、XML 軸プロパティを使用して XML 要素の属性と子要素を参照します。このコード例では、LINQ クエリを使用して子要素を取得し、それらを XML 要素として出力することで、変換を効率よく行っています。
' Place Imports statements at the top of your program.
Imports <xmlns:ns="http://SomeNamespace">
Module Sample1
Sub SampleTransform()
' Create test by using a global XML namespace prefix.
Dim contact = _
<ns:contact>
<ns:name>Patrick Hines</ns:name>
<ns:phone ns:type="home">206-555-0144</ns:phone>
<ns:phone ns:type="work">425-555-0145</ns:phone>
</ns:contact>
Dim phoneTypes = _
<phoneTypes>
<%= From phone In contact.<ns:phone> _
Select <type><%= phone.@ns:type %></type> _
%>
</phoneTypes>
Console.WriteLine(phoneTypes)
End Sub
End Module
詳細については、「Visual Basic での XML へのアクセス」を参照してください。
XML 名前空間
Visual Basic では、Imports ステートメントを使用して、グローバル XML 名前空間のエイリアスを指定できます。次の例は、Imports ステートメントを使用して XML 名前空間をインポートする方法を示しています。
Imports <xmlns:ns="http://someNamespace">
XML 名前空間のエイリアスは、XML 軸プロパティにアクセスしたり、XML ドキュメントや XML 要素の XML リテラルを宣言したりするときに使用できます。
GetXmlNamespace 演算子を使用すると、特定の名前空間プレフィックスの XNamespace オブジェクトを取得できます。
詳細については、「Imports ステートメント (XML 名前空間)」を参照してください。
XML リテラルでの XML 名前空間の使用
次の例は、グローバル名前空間 ns を使用する XElement オブジェクトの作成方法を示しています。
Dim contact1 As XElement = _
<ns:contact>
<ns:name>Patrick Hines</ns:name>
<ns:phone type="home">206-555-0144</ns:phone>
<ns:phone type="work">425-555-0145</ns:phone>
</ns:contact>
Console.WriteLine(contact1)
Visual Basic コンパイラは、XML 名前空間のエイリアスを含む XML リテラルを、XML 表記の XML 名前空間を使用する同等のコードに変換し、xmlns 属性を追加します。前のセクションで示した例のコードをコンパイルすると、次の例と本質的に同一の実行可能コードが生成されます。
Dim contact2 As XElement = _
<ns1:contact xmlns:ns1="http://someNamespace">
<ns1:name>Patrick Hines</ns1:name>
<ns1:phone type="home">206-555-0144</ns1:phone>
<ns1:phone type="work">425-555-0145</ns1:phone>
</ns1:contact>
Console.WriteLine(contact2)
XML 軸プロパティでの XML 名前空間の使用
XML リテラル内で宣言された XML 名前空間は、XML 軸プロパティでは使用できません。ただし、XML 軸プロパティでグローバル名前空間を使用することはできます。XML 名前空間プレフィックスとローカル要素名を区切るには、コロンを使用します。例を次に示します。
Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)