XML 要素リテラル (Visual Basic)

XElement オブジェクトを表すリテラル。

構文

<name [ attributeList ] />
-or-
<name [ attributeList ] > [ elementContents ] </[ name ]>

指定項目

  • <

    必須です。 開始要素タグを開きます。

  • name

    必須です。 要素名 形式は次のいずれかです。

    • 要素名のリテラル テキスト。[ePrefix:]eName の形式で指定します。各項目の内容を次に示します。

      パーツ 説明
      ePrefix 任意。 要素の XML 名前空間プレフィックス。 ファイル内またはプロジェクト レベルで Imports ステートメントで定義されたグローバル XML 名前空間か、この要素または親要素で定義されたローカル XML 名前空間である必要があります。
      eName 必須です。 要素名 形式は次のいずれかです。

      - リテラル テキスト。 「宣言する XML 要素と属性の名前」を参照してください。
      - <%= eNameExp %> 形式の埋め込み式。 eNameExp の型は String か、暗黙的に XName に変換可能な型である必要があります。
    • <%= nameExp %> 形式の埋め込み式。 nameExp の型は String か、暗黙的に XName に変換可能な型である必要があります。 埋め込み式は、要素の終了タグでは使用できません。

  • attributeList

    任意。 リテラルで宣言された属性のリスト。

    attribute [ attribute ... ]

    attribute の構文は次のいずれかです。

    • 属性割り当て。[aPrefix:]aName=aValue の形式で指定します。各項目の内容を次に示します。

      パーツ 説明
      aPrefix 任意。 属性の XML 名前空間プレフィックス。 Imports ステートメントで定義されたグローバル XML 名前空間か、この要素または親要素で定義されたローカル XML 名前空間である必要があります。
      aName 必須です。 属性の名前。 形式は次のいずれかです。

      - リテラル テキスト。 「宣言する XML 要素と属性の名前」を参照してください。
      - <%= aNameExp %> 形式の埋め込み式。 aNameExp の型は String か、暗黙的に XName に変換可能な型である必要があります。
      aValue 任意。 属性の値。 形式は次のいずれかです。

      - 引用符で囲まれたリテラル テキスト。
      - <%= aValueExp %> 形式の埋め込み式。 任意の型を使用できます。
    • <%= aExp %> 形式の埋め込み式。

  • />

    任意。 コンテンツのない空の要素であることを示します。

  • >

    必須です。 開始タグまたは空の要素タグを終了します。

  • elementContents

    任意。 要素のコンテンツ。

    content [ content ... ]

    content に次のいずれかを指定できます。

    • リテラル テキスト。 リテラル テキストがある場合、elementContents のすべての空白が有意になります。

    • <%= contentExp %> 形式の埋め込み式。

    • XML 要素リテラル。

    • XML コメント リテラル。 「XML コメント リテラル」を参照してください。

    • XML 処理命令リテラル。 「XML 処理命令リテラル」を参照してください。

    • XML CDATA リテラル。 「XML CDATA リテラル」を参照してください。

  • </[name]>

    任意。 要素の終了タグを表します。 埋め込み式の結果である場合、省略可能な name パラメーターは使用できません。

戻り値

XElement オブジェクト。

Remarks

XML 要素リテラル構文を使用して、コード内に XElement オブジェクトを作成できます。

注意

XML リテラルは、行連結文字を使用せずに、複数行にまたがることができます。 この機能を使用すると、XML ドキュメントからコンテンツをコピーして、Visual Basic プログラムに直接貼り付けることができます。

<%= exp %> 形式の埋め込み式を使用すると、XML 要素リテラルに動的な情報を追加できます。 詳細については、「XML での埋め込み式」を参照してください。

XML 要素リテラルは、Visual Basic コンパイラによって、XElement コンストラクターへの呼び出しに変換されます。また、必要に応じて、XAttribute コンストラクターへの呼び出しに変換されます。

XML 名前空間

XML 名前空間プレフィックスは、コード内で同じ名前空間の要素を使用して XML リテラルを何度も作成する必要がある場合に役立ちます。 グローバル XML 名前空間プレフィックス (Imports ステートメントを使用して定義) またはローカル プレフィックス (xmlns:xmlPrefix="xmlNamespace" 属性構文を使用して定義) を使用できます。 詳細については、「Imports ステートメント (XML 名前空間)」を参照してください。

XML 名前空間のスコープ規則に従って、ローカル プレフィックスはグローバル プレフィックスよりも優先されます。 ただし、XML リテラルで XML 名前空間が定義されている場合、その名前空間は、埋め込み式に出現する式では使用できません。 埋め込み式は、グローバル XML 名前空間だけにアクセスできます。

XML リテラルで使用されているグローバル XML 名前空間はそれぞれ、Visual Basic コンパイラによって生成されたコード内では、1 つのローカル名前空間定義に変換されます。 使用されていないグローバル XML 名前空間は、生成されたコードに表示されません。

例 1

次の例は、入れ子にされた 2 つの空の要素が含まれる、シンプルな XML 要素を作成する方法を示しています。

Dim test1 As XElement = 
<outer>
    <inner1></inner1>
    <inner2/>
</outer>

Console.WriteLine(test1)

この例では、次のテキストが表示されます。 リテラルでは空の要素の構造が保持されることに注意してください。

<outer>
  <inner1></inner1>
  <inner2 />
</outer>

例 2

次の例は、埋め込み式を使用して要素に名前を付けて、属性を作成する方法を示しています。

Dim elementType = "book"
Dim authorName = "My Author"
Dim attributeName1 = "year"
Dim attributeValue1 = 1999
Dim attributeName2 = "title"
Dim attributeValue2 = "My Book"

Dim book As XElement = 
<<%= elementType %>
    isbn="1234"
    author=<%= authorName %>
    <%= attributeName1 %>=<%= attributeValue1 %>
    <%= New XAttribute(attributeName2, attributeValue2) %>
/>

Console.WriteLine(book)

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

<book isbn="1234" author="My Author" year="1999" title="My Book" />

例 3

次の例では、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 名前空間のプレフィックスが、XML 名前空間のプレフィックス定義に変換されていることに注意してください。 <ns:middle> 要素により、<ns:inner1> 要素の XML 名前空間プレフィックスが再定義されます。 ただし、<ns: inner2> 要素では、Imports ステートメントで定義された名前空間が使用されます。

関連項目