XML リテラルを使用すると、XML を Visual Basic コードに直接組み込むことができます。 XML リテラル構文は LINQ to XML オブジェクトを表し、XML 1.0 構文に似ています。 これにより、コードの構造が最終的な XML と同じであるため、XML 要素とドキュメントをプログラムで簡単に作成できます。
Visual Basic は、XML リテラルを LINQ to XML オブジェクトにコンパイルします。 LINQ to XML は、XML を作成および操作するための単純なオブジェクト モデルを提供します。このモデルは、Language-Integrated クエリ (LINQ) とうまく統合されます。 詳細については、XElementを参照してください。
XML リテラルに Visual Basic 式を埋め込むことができます。 実行時に、アプリケーションは、埋め込み式の値を組み込んで、リテラルごとに LINQ to XML オブジェクトを作成します。 これにより、XML リテラル内で動的コンテンツを指定できます。 詳細については、「XML での埋め込み式」を参照してください。
XML リテラル構文と XML 1.0 構文の違いの詳細については、 XML リテラルと XML 1.0 仕様を参照してください。
単純リテラル
有効な XML を入力または貼り付けることで、Visual Basic コードで LINQ to XML オブジェクトを作成できます。 XML 要素リテラルは、 XElement オブジェクトを返します。 詳細については、「 XML 要素リテラル 」および「 XML リテラル」および「XML 1.0 仕様」を参照してください。 次の例では、複数の子要素を持つ 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>
次の例に示すように、 <?xml version="1.0"?>
を使用して XML リテラルを開始することで、XML ドキュメントを作成できます。 XML ドキュメント リテラルは、 XDocument オブジェクトを返します。 詳細については、「 XML ドキュメント リテラル」を参照してください。
Dim contactDoc As XDocument =
<?xml version="1.0"?>
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
注
Visual Basic の XML リテラル構文は、XML 1.0 仕様の構文と同じではありません。 詳細については、「 XML リテラル」および「XML 1.0 仕様」を参照してください。
行継続
XML リテラルは、行連結文字 (スペースアンダースコア入力シーケンス) を使用せずに複数行にまたがることができます。 これにより、コード内の XML リテラルを XML ドキュメントと比較しやすくなります。
コンパイラは、行連結文字を XML リテラルの一部として扱います。 したがって、スペースアンダースコア入力シーケンスは、LINQ to XML オブジェクトに属している場合にのみ使用する必要があります。
ただし、埋め込み式に複数行式がある場合は、行連結文字が必要です。 詳細については、「XML での埋め込み式」を参照してください。
XML リテラルへのクエリの埋め込み
埋め込み式でクエリを使用できます。 これを行うと、クエリによって返される要素が XML 要素に追加されます。 これにより、ユーザーのクエリの結果などの動的コンテンツを XML リテラルに追加できます。
たとえば、次のコードでは、埋め込みクエリを使用して、 phoneNumbers2
配列のメンバーから XML 要素を作成し、それらの要素を contact2
の子として追加します。
Public Class XmlSamples
Public Sub Main()
' Initialize the objects.
Dim phoneNumbers2 As Phone() = {
New Phone("home", "206-555-0144"),
New Phone("work", "425-555-0145")}
' Convert the data contained in phoneNumbers2 to XML.
Dim contact2 =
<contact>
<name>Patrick Hines</name>
<%= From p In phoneNumbers2
Select <phone type=<%= p.Type %>><%= p.Number %></phone>
%>
</contact>
Console.WriteLine(contact2)
End Sub
End Class
Class Phone
Public Type As String
Public Number As String
Public Sub New(ByVal t As String, ByVal n As String)
Type = t
Number = n
End Sub
End Class
コンパイラが XML リテラルからオブジェクトを作成する方法
Visual Basic コンパイラは、XML リテラルを同等の LINQ to XML コンストラクターの呼び出しに変換して、LINQ to XML オブジェクトを構築します。 たとえば、Visual Basic コンパイラは、次のコード例を XML バージョン命令のXProcessingInstruction コンストラクターの呼び出し、<contact>
、<name>
、および<phone>
要素のXElement コンストラクターの呼び出し、およびtype
属性のXAttribute コンストラクターの呼び出しに変換します。 具体的には、次のサンプルの属性を指定すると、Visual Basic コンパイラは XAttribute(XName, Object) コンストラクターを 2 回呼び出します。 1 つ目は、name
パラメーターの値type
と、value
パラメーターの値home
を渡します。 2 つ目は、name
パラメーターの値type
も渡しますが、value
パラメーターの値work
。
Dim contactDoc As XDocument =
<?xml version="1.0"?>
<contact>
<name>Patrick Hines</name>
<phone type="home">206-555-0144</phone>
<phone type="work">425-555-0145</phone>
</contact>
こちらも参照ください
.NET