Visual Basic における LINQ to XML の概要
Visual Basic では、XML リテラルと XML 軸プロパティをとおして LINQ to XML をサポートします。 これにより、Visual Basic コードでは、使い慣れた便利な構文を使用して XML を操作できます。XML リテラルを使用すると、コード内に XML を直接含めることができます。 XML 軸プロパティは、XML リテラルの子ノード、子孫ノード、および属性へのアクセスを可能にします。 詳細については、「XML リテラルの概要 (Visual Basic)」および「Visual Basic での XML へのアクセス」を参照してください。
LINQ to XML は、統合言語クエリ (LINQ) を活用するように特別に設計されたメモリ内 XML プログラミング API です。 LINQ API を直接呼び出すこともできますが、XML リテラルの宣言と XML 軸プロパティへの直接的なアクセスは Visual Basic でのみ可能です。
注意
XML リテラルと XML 軸プロパティは、ASP.NET ページ内の宣言コードではサポートされません。Visual Basic の XML 機能を使用するには、ASP.NET アプリケーションの分離コード ページにコードを配置します。
関連するビデオ デモについては、「How Do I Get Started with LINQ to XML? (操作方法: LINQ to XML を使用する)」および「How Do I Create Excel Spreadsheets using LINQ to XML? (操作方法: LINQ to XML を使用して Excel スプレッドシートを作成する)」を参照してください。
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 演算子 (Visual Basic)を使用すると、特定の名前空間プレフィックスの 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)