Imports ステートメント (XML 名前空間)

XML リテラルおよび XML 軸プロパティで使用するために、XML 名前空間プレフィックスをインポートします。

構文

Imports <xmlns:xmlNamespacePrefix = "xmlNamespaceName">

指定項目

xmlNamespacePrefix
任意。 XML 要素と属性で xmlNamespaceName を参照できる文字列。 xmlNamespacePrefix を指定していない場合、インポートされた XML 名前空間が既定の XML 名前空間になります。 有効な XML 識別子である必要があります。 詳細については、「宣言する XML 要素と属性の名前」を参照してください。

xmlNamespaceName
必須です。 インポートされる XML 名前空間を識別する文字列。

Remarks

Imports ステートメントを使用して、XML リテラルおよび XML 軸プロパティで、または GetXmlNamespace 演算子に渡されるパラメーターとして、使用できるグローバル XML 名前空間を定義できます。 (Imports ステートメントを使用して、コードで型名を使用する場所で使用できる別名をインポートする方法については、「Imports ステートメント (.NET 名前空間および型)」を参照してください。) Imports ステートメントを使用して XML 名前空間を宣言する構文は、XML で使用する構文と同じです。 そのため、XML ファイルから名前空間宣言をコピーし、それを Imports ステートメントで使用できます。

XML 名前空間プレフィックスは、同じ名前空間にある XML 要素を繰り返し作成する場合に便利です。 Imports ステートメントで宣言された XML 名前空間プレフィックスは、ファイル内のすべてのコードで使用できるという意味でグローバルです。 XML 要素リテラルを作成するとき、および XML 軸プロパティにアクセスするときにそれを使用できます。 詳細については、「XML 要素リテラル」と「XML 軸プロパティ」を参照してください。

名前空間プレフィックスを指定せずにグローバル XML 名前空間を定義した場合 (Imports <xmlns="http://SomeNameSpace>" など)、その名前空間は既定の XML 名前空間と見なされます。 既定の XML 名前空間は、名前空間を明示的に指定していない XML 要素リテラルまたは XML 属性軸プロパティに使用されます。 さらに既定の名前空間は、指定された名前空間が空の名前空間 (つまり、xmlns="") の場合にも使用されます。 既定の XML 名前空間は、XML リテラルの XML 属性、または名前空間を持たない XML 属性軸プロパティには適用されません。

XML リテラルに定義されている XML 名前空間は、ローカル XML 名前空間と呼ばれ、Imports ステートメントでグローバルとして定義されている XML 名前空間よりも優先されます。 Imports ステートメントで定義された XML 名前空間は、Visual Basic プロジェクトにインポートされた XML 名前空間よりも優先されます。 XML リテラルで XML 名前空間を定義している場合、そのローカル名前空間は埋め込み式に適用されません。

グローバル XML 名前空間は .NET Framework 名前空間と同じスコープおよび定義ルールに従います。 そのため、.NET Framework 名前空間をインポート可能などこでも、Imports ステートメントを含めてグローバル XML 名前空間を定義できます。 これには、コード ファイルとプロジェクトレベルの両方でインポートされた名前空間が含まれます。 プロジェクトレベルでインポートされた名前空間については、「[参照設定] ページ (プロジェクト デザイナー) (Visual Basic)」を参照してください。

各ソース ファイルには、任意の数の Imports ステートメントを含めることができます。 これらは、Option Strict ステートメントなど、オプションの宣言の後に続く必要があり、ModuleClass ステートメントなどのプログラミング要素の宣言の前に記述する必要があります。

例 1

次の例では、既定の XML 名前空間と、プレフィックス ns で識別される XML 名前空間をインポートしています。 次に、両方の名前空間を使用する XML リテラルを作成しています。

' Place Imports statements at the top of your program.  
Imports <xmlns="http://DefaultNamespace">
Imports <xmlns:ns="http://NewNamespace">

Module Module1

  Sub Main()
    ' Create element by using the default global XML namespace. 
    Dim inner = <innerElement/>

    ' Create element by using both the default global XML namespace
    ' and the namespace identified with the "ns" prefix.
    Dim outer = <ns:outer>
                  <ns:innerElement></ns:innerElement>
                  <siblingElement></siblingElement>
                  <%= inner %>
                </ns:outer>

    ' Display element to see its final form. 
    Console.WriteLine(outer)
  End Sub

End Module

このコードを実行すると、次のテキストが表示されます。

<ns:outer xmlns="http://DefaultNamespace"
          xmlns:ns="http://NewNamespace">
  <ns:innerElement></ns:innerElement>
  <siblingElement></siblingElement>
  <innerElement />
</ns:outer>

例 2

次の例では、名前空間プレフィックス ns をインポートしています。 次に、名前空間プレフィックスを使用する XML リテラルを作成し、要素の最終形式を表示します。

' Place Imports statements at the top of your program.  
Imports <xmlns:ns="http://SomeNamespace">

Class TestClass1

    Shared Sub TestPrefix()
        ' Create test using a global XML namespace prefix. 
        Dim inner2 = <ns:inner2/>

        Dim test = 
        <ns:outer>
            <ns:middle xmlns:ns="http://NewNamespace">
                <ns:inner1/>
                <%= inner2 %>
            </ns:middle>
        </ns:outer>

        ' Display test to see its final form. 
        Console.WriteLine(test)
    End Sub

End Class

このコードを実行すると、次のテキストが表示されます。

<ns:outer xmlns:ns="http://SomeNamespace">
  <ns:middle xmlns:ns="http://NewNamespace">
    <ns:inner1 />
    <inner2 xmlns="http://SomeNamespace" />
  </ns:middle>
</ns:outer>

コンパイラによって、XML 名前空間プレフィックスがグローバル プレフィックスからローカル プレフィックス定義に変換されていることに注意してください。

例 3

次の例では、名前空間プレフィックス ns をインポートしています。 その後、この名前空間のプレフィックスを使用して XML リテラルを作成し、修飾名 ns:name を持つ最初の子ノードにアクセスします。

Imports <xmlns:ns = "http://SomeNamespace"> 
 
Class TestClass4

    Shared Sub TestPrefix()
        Dim contact = <ns:contact>
                        <ns:name>Patrick Hines</ns:name>
                      </ns:contact>
        Console.WriteLine(contact.<ns:name>.Value)
    End Sub

End Class

このコードを実行すると、次のテキストが表示されます。

Patrick Hines

関連項目