XML 要素リテラル

更新 : 2007 年 11 月

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 オブジェクト。

解説

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

Bb384832.alert_note(ja-jp,VS.90).gifメモ :

XML リテラルは、行継続文字なしで複数の行に記述できます。この機能により、XML ドキュメントで内容をコピーし、Visual Basic プログラムに直接貼り付けることができます。

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

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

XML 名前空間

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

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

Visual Basic コンパイラは、XML リテラルで使用される各グローバル XML 名前空間を、生成されるコードでは 1 つのローカル名前空間の定義に変換します。使用されないグローバル XML 名前空間は、生成されるコードには出現しません。

使用例

次の例は、入れ子になった空の要素を 2 つ含む簡単な XML 要素の作成方法を示します。

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

Console.WriteLine(test1)

このコードを実行すると、次のテキストが表示されます。リテラルが空の要素の構造を維持しています。

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

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

Dim elementType As String = "book"
Dim attributeName1 As String = "year"
Dim attributeValue1 As Integer = 1999
Dim attributeName2 As String = "title"
Dim attributeValue2 As String = "My Book"

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

Console.WriteLine(book)

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

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

次の例は、ns を XML 名前空間プレフィックスとして宣言します。その後、名前空間のプレフィックスを使用して、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 ステートメントで定義されている名前空間を使用します。

参照

概念

宣言する XML 要素と属性の名前

XML での埋め込み式

参照

XElement

XML コメント リテラル

XML CDATA リテラル

Imports ステートメント (.NET 名前空間および型)

その他の技術情報

XML リテラル

Visual Basic での XML の作成