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 オブジェクトを作成できます。
メモ : |
---|
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 ステートメントで定義されている名前空間を使用します。
参照
概念
参照
Imports ステートメント (.NET 名前空間および型)