Visual Basic における LINQ to XML の概要Overview of LINQ to XML in Visual Basic

Visual Basic は、XML リテラルおよび XML 軸プロパティを使用した LINQ to XMLLINQ to XML のサポートを提供しています。Visual Basic provides support for LINQ to XMLLINQ to XML through XML literals and XML axis properties. これにより、使い慣れた便利な構文を使用して、Visual Basic コードで XML を操作できます。This enables you to use a familiar, convenient syntax for working with XML in your Visual Basic code. XML リテラルを使用すると、コードに XML を直接含めることができます。XML literals enable you to include XML directly in your code. XML 軸プロパティを使用すると、XML リテラルの子ノード、子孫ノード、および属性にアクセスできます。XML axis properties enable you to access child nodes, descendant nodes, and attributes of an XML literal. 詳細については、「XML リテラルの概要」と「Visual Basic での XML へのアクセス」を参照してください。For more information, see XML Literals Overview and Accessing XML in Visual Basic.

LINQ to XMLLINQ to XML は、統合言語クエリ (LINQ) を利用するために設計された、メモリ内の XML プログラミング API です。is an in-memory XML programming API designed specifically to take advantage of Language-Integrated Query (LINQ). LINQ API は直接呼び出すことができますが、XML リテラルを宣言して XML 軸プロパティに直接アクセスできるのは、Visual Basic だけです。Although you can call the LINQ APIs directly, only Visual Basic enables you to declare XML literals and directly access XML axis properties.


XML リテラルおよび XML 軸プロパティは、ASP.NET ページの宣言型コードではサポートされません。XML literals and XML axis properties are not supported in declarative code in an ASP.NET page. Visual Basic の XML 機能を使用するには、ASP.NET アプリケーションの分離コード ページにコードを配置します。To use Visual Basic XML features, put your code in a code-behind page in your ASP.NET application.

再生ボタン 関連するビデオ デモについては、「LINQ to XML を使ってみる」と「LINQ to XML を使用して Excel スプレッドシートを作成する」を参照してください。Play button For related video demonstrations, see How Do I Get Started with LINQ to XML? and How Do I Create Excel Spreadsheets using LINQ to XML?.

XML の作成Creating XML

Visual Basic で XML ツリーを作成する方法は 2 つあります。There are two ways to create XML trees in Visual Basic. XML リテラルをコード内に直接宣言するか、LINQ API を使用してツリーを作成することができます。You can declare an XML literal directly in code, or you can use the LINQ APIs to create the tree. どちらのプロセスでも、XML ツリーの最終的な構造をコードに反映させることができます。Both processes enable the code to reflect the final structure of the XML tree. たとえば、次のコード例では、XML 要素を作成しています。For example, the following code example creates an XML element:

Dim contact1 As XElement = 
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>

詳細については、「Visual Basicでの XML の作成」を参照してください。For more information, see Creating XML in Visual Basic.

XML へのアクセスおよび移動Accessing and Navigating XML

Visual Basic には、XML 構造体にアクセスして移動するための XML 軸プロパティが用意されています。Visual Basic provides XML axis properties for accessing and navigating XML structures. これらのプロパティを使用すると、XML の子要素名を指定することによって、XML の要素と属性にアクセスできます。These properties enable you to access XML elements and attributes by specifying the XML child element names. または、LINQ メソッドを明示的に呼び出して、要素と属性の移動や検索を行うこともできます。Alternatively, you can explicitly call the LINQ methods for navigating and locating elements and attributes. たとえば、次のコード例では、XML 要素の属性と子要素を参照するために XML 軸プロパティを使用しています。For example, the following code example uses XML axis properties to refer to the attributes and child elements of an XML element. このコード例では、LINQ クエリを使用して子要素を取得し、それらを XML 要素として出力し、変換を効果的に実行しています。The code example uses a LINQ query to retrieve child elements and output them as XML elements, effectively performing a transform.

' Place Imports statements at the top of your program.  
Imports <xmlns:ns="http://SomeNamespace">

Module Sample1

    Sub SampleTransform()

        ' Create test by using a global XML namespace prefix. 

        Dim contact = 
                <ns:name>Patrick Hines</ns:name>
                <ns:phone ns:type="home">206-555-0144</ns:phone>
                <ns:phone ns:type="work">425-555-0145</ns:phone>

        Dim phoneTypes = 
              <%= From phone In contact.<ns:phone> 
                  Select <type><%= phone.@ns:type %></type> 

    End Sub

End Module

詳細については、「Visual Basicでの XML へのアクセス」を参照してください。For more information, see Accessing XML in Visual Basic.

XML 名前空間XML Namespaces

Visual Basic を使用すると、Imports ステートメントを使用して、グローバルな XML 名前空間の別名を指定できます。Visual Basic enables you to specify an alias to a global XML namespace by using the Imports statement. 次の例は、Imports ステートメントを使用して XML 名前空間をインポートする方法を示しています。The following example shows how to use the Imports statement to import an XML namespace:

Imports <xmlns:ns="http://someNamespace">

XML 名前空間の別名は、XML 軸プロパティにアクセスする場合や、XML ドキュメントおよび XML 要素の XML リテラルを宣言する場合に使用できます。You can use an XML namespace alias when you access XML axis properties and declare XML literals for XML documents and elements.

GetXmlNamespace 演算子を使用すると、特定の名前空間プレフィックスの XNamespace オブジェクトを取得できます。You can retrieve an XNamespace object for a particular namespace prefix by using the GetXmlNamespace Operator.

詳細については、「Imports ステートメント (XML 名前空間)」を参照してください。For more information, see Imports Statement (XML Namespace).

XML リテラルでの XML 名前空間の使用Using XML Namespaces in XML Literals

次の例は、グローバルな名前空間 ns を使用する XElement オブジェクトを作成する方法を示しています。The following example shows how to create an XElement object that uses the global namespace ns:

Dim contact1 As XElement = 
        <ns:name>Patrick Hines</ns:name>
        <ns:phone type="home">206-555-0144</ns:phone>
        <ns:phone type="work">425-555-0145</ns:phone>


Visual Basic コンパイラは、XML 名前空間の別名を含む XML リテラルを同等のコードに変換します。このコードは、xmlns 属性に XML 名前空間を使用するために XML 表記を使用します。The Visual Basic compiler translates XML literals that contain XML namespace aliases into equivalent code that uses the XML notation for using XML namespaces, with the xmlns attribute. 前のセクションの例のコードをコンパイルすると、次の例と基本的に同じ実行可能コードが生成されます。When compiled, the code in the previous section's example produces essentially the same executable code as the following example:

Dim contact2 As XElement = 
    <ns1:contact xmlns:ns1="http://someNamespace">
        <ns1:name>Patrick Hines</ns1:name>
        <ns1:phone type="home">206-555-0144</ns1:phone>
        <ns1:phone type="work">425-555-0145</ns1:phone>


XML 軸プロパティでの XML 名前空間の使用Using XML Namespaces in XML Axis Properties

XML リテラルで宣言された XML 名前空間を XML 軸プロパティで使用することはできません。XML namespaces declared in XML literals are not available for use in XML axis properties. ただし、XML 軸プロパティではグローバルな名前空間を使用できます。However, global namespaces can be used with the XML axis properties. XML 名前空間プレフィックスとローカルな要素名を区切るには、コロンを使用します。Use a colon to separate the XML namespace prefix from the local element name. 例を次に示します。Following is an example:

Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)

関連項目See also