XML リテラルの概要 (Visual Basic)XML Literals Overview (Visual Basic)

Xml リテラルを使用すると、xml を Visual Basic コードに直接組み込むことができます。An XML literal allows you to incorporate XML directly into your Visual Basic code. XML リテラルの構文は LINQ to XMLLINQ to XML オブジェクトを表し、XML 1.0 の構文に似ています。The XML literal syntax represents LINQ to XMLLINQ to XML objects, and it is the similar to the XML 1.0 syntax. これにより、コードが最終的な XML と同じ構造を持つため、XML 要素とドキュメントをプログラムによって簡単に作成できます。This makes it easier to create XML elements and documents programmatically because your code has the same structure as the final XML.

Visual Basic は、XML リテラルを LINQ to XMLLINQ to XML オブジェクトにコンパイルします。Visual Basic compiles XML literals into LINQ to XMLLINQ to XML objects. LINQ to XMLLINQ to XML には、XML を作成および操作するための簡単なオブジェクトモデルが用意されています。このモデルは、統合言語クエリ (LINQ) と統合されています。provides a simple object model for creating and manipulating XML, and this model integrates well with Language-Integrated Query (LINQ). 詳細については、「 XElement」を参照してください。For more information, see XElement.

XML リテラルに Visual Basic 式を埋め込むことができます。You can embed a Visual Basic expression in an XML literal. 実行時に、アプリケーションは、埋め込み式の値を組み込んで、各リテラルの LINQ to XMLLINQ to XML オブジェクトを作成します。At run time, your application creates a LINQ to XMLLINQ to XML object for each literal, incorporating the values of the embedded expressions. これにより、XML リテラル内に動的コンテンツを指定できます。This lets you specify dynamic content inside an XML literal. 詳細については、「XML での埋め込み式」を参照してください。For more information, see Embedded Expressions in XML.

Xml リテラル構文と XML 1.0 構文の違いの詳細については、「 Xml リテラルと xml 1.0 仕様」を参照してください。For more information about the differences between the XML literal syntax and the XML 1.0 syntax, see XML Literals and the XML 1.0 Specification.

単純なリテラルSimple Literals

Visual Basic コードに LINQ to XMLLINQ to XML オブジェクトを作成するには、有効な XML を入力するか、貼り付けます。You can create a LINQ to XMLLINQ to XML object in your Visual Basic code by typing or pasting in valid XML. XML 要素リテラルは XElement オブジェクトを返します。An XML element literal returns an XElement object. 詳細については、「XML 要素リテラル」と「XML リテラルと XML 1.0 仕様」を参照してください。For more information, see XML Element Literal and XML Literals and the XML 1.0 Specification. 次の例では、複数の子要素を持つ XML 要素を作成します。The following example creates an XML element that has several child elements.

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 ドキュメントを作成できます。You can create an XML document by starting an XML literal with <?xml version="1.0"?>, as shown in the following example. XML ドキュメントリテラルは、XDocument オブジェクトを返します。An XML document literal returns an XDocument object. 詳細については、「XML ドキュメントリテラル」を参照してください。For more information, see XML Document Literal.

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 仕様の構文と同一ではありません。The XML literal syntax in Visual Basic is not identical to the syntax in the XML 1.0 specification. 詳細については、「 Xml リテラル」と「xml 1.0 仕様」を参照してください。For more information, see XML Literals and the XML 1.0 Specification.

行継続Line Continuation

XML リテラルは、行連結文字を使用せずに、複数の行にまたがることができます (スペース-アンダースコア-入力シーケンス)。An XML literal can span multiple lines without using line continuation characters (the space-underscore-enter sequence). これにより、コード内の XML リテラルを XML ドキュメントと比較しやすくなります。This makes it easier to compare XML literals in code with XML documents.

コンパイラは、行連結文字を XML リテラルの一部として扱います。The compiler treats line continuation characters as part of an XML literal. そのため、LINQ to XMLLINQ to XML オブジェクトに属している場合にのみ、スペース-アンダースコア-enter シーケンスを使用する必要があります。Therefore, you should use the space-underscore-enter sequence only when it belongs in the LINQ to XMLLINQ to XML object.

ただし、埋め込み式に複数行式がある場合は、行連結文字が必要になります。However, you do need line continuation characters if you have a multiline expression in an embedded expression. 詳細については、「XML での埋め込み式」を参照してください。For more information, see Embedded Expressions in XML.

XML リテラルへのクエリの埋め込みEmbedding Queries in XML Literals

埋め込み式では、クエリを使用できます。You can use a query in an embedded expression. この操作を行うと、クエリによって返される要素が XML 要素に追加されます。When you do this, the elements returned by the query are added to the XML element. これにより、ユーザーのクエリの結果などの動的なコンテンツを XML リテラルに追加できます。This lets you add dynamic content, such as the result of a user's query, to an XML literal.

たとえば、次のコードでは、埋め込みクエリを使用して phoneNumbers2 配列のメンバーから XML 要素を作成し、それらの要素を contact2の子として追加しています。For example, the following code uses an embedded query to create XML elements from the members of the phoneNumbers2 array and then add those elements as children of 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 リテラルからオブジェクトを作成する方法How the Compiler Creates Objects from XML Literals

Visual Basic コンパイラは、XML リテラルを同等の LINQ to XMLLINQ to XML コンストラクターの呼び出しに変換し、LINQ to XMLLINQ to XML オブジェクトを構築します。The Visual Basic compiler translates XML literals into calls to the equivalent LINQ to XMLLINQ to XML constructors to build up the LINQ to XMLLINQ to XML object. たとえば、Visual Basic コンパイラは、次のコード例を XML バージョン命令の XProcessingInstruction コンストラクターの呼び出しに変換し、<contact><name>、および <phone> の要素に対して XElement コンストラクターを呼び出し、XAttribute 属性の type コンストラクターを呼び出します。For example, the Visual Basic compiler will translate the following code example into a call to the XProcessingInstruction constructor for the XML version instruction, calls to the XElement constructor for the <contact>, <name>, and <phone> elements, and calls to the XAttribute constructor for the type attribute. 具体的には、次のサンプルの属性を指定すると、Visual Basic コンパイラは、XAttribute(XName, Object) コンストラクターを2回呼び出します。Specifically, given the attributes in the following sample, the Visual Basic compiler will call the XAttribute(XName, Object) constructor twice. 最初のは、name パラメーターの値 typevalue パラメーターの値 home を渡します。The first will pass the value type for the name parameter and the value home for the value parameter. 2番目のパラメーターは、name パラメーターの値 type も渡しますが、value パラメーターの値 work を渡します。The second will also pass the value type for the name parameter, but the value work for the value parameter.

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>

関連項目See also