次の方法で共有


Visual Basic での LINQ to XML の概要

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)

こちらも参照ください