Visual Basic では、XML リテラルと XML 軸プロパティを使用した LINQ to XML のサポートが提供されます。 これにより、Visual Basic コードで XML を操作するための使い慣れた便利な構文を使用できます。 XML リテラルを 使用すると、コードに XML を直接含めることができます。 XML 軸プロパティ を使用すると、XML リテラルの子ノード、子孫ノード、および属性にアクセスできます。 詳細については、Visual Basic での XML リテラルの概要 と XML へのアクセスに関するページを参照してください。
LINQ to XML は、Language-Integrated クエリ (LINQ) を利用するように特別に設計されたインメモリ XML プログラミング API です。 LINQ API は直接呼び出すことができますが、XML リテラルを宣言し、XML 軸プロパティに直接アクセスできるのは Visual Basic だけです。
注
XML リテラルと XML 軸のプロパティは、ASP.NET ページの宣言型コードではサポートされていません。 Visual Basic XML 機能を使用するには、ASP.NET アプリケーションの分離コード ページにコードを配置します。
関連するビデオ デモについては、「 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 名前空間のエイリアスを使用できます。
XNamespaceを使用して、特定の名前空間プレフィックスの オブジェクトを取得できます。
詳細については、「 Imports ステートメント (XML 名前空間)」を参照してください。
XML リテラルでの XML 名前空間の使用
次の例は、グローバル名前空間XElementを使用するns
オブジェクトを作成する方法を示しています。
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)
こちらも参照ください
.NET