Visual Basic 中的 LINQ to XML 概觀Overview of LINQ to XML in Visual Basic

Visual Basic LINQ to XMLLINQ to XML 透過 xml 常值和 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 中的 xmlFor more information, see XML Literals Overview and Accessing XML in Visual Basic.

LINQ to XMLLINQ to XML是記憶體中的 XML 程式設計 API,專門設計來利用語言整合式查詢(LINQ)。is an in-memory XML programming API designed specifically to take advantage of Language-Integrated Query (LINQ). 雖然您可以直接呼叫 LINQ Api,但只有 Visual Basic 可讓您宣告 XML 常值,並直接存取 XML 軸屬性。Although you can call the LINQ APIs directly, only Visual Basic enables you to declare XML literals and directly access XML axis properties.

注意

ASP.NET 網頁中的宣告式程式碼不支援 XML 常值和 XML 軸屬性。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?.

建立 XMLCreating XML

有兩種方式可在 Visual Basic 中建立 XML 樹狀結構。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 = 
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

如需詳細資訊,請參閱在 Visual Basic 中建立 XMLFor more information, see Creating XML in Visual Basic.

存取和流覽 XMLAccessing 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: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>
            </ns:contact>

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

        Console.WriteLine(phoneTypes)
    End Sub

End Module

如需詳細資訊,請參閱在 Visual Basic 中存取 XMLFor more information, see Accessing XML in Visual Basic.

XML 命名空間XML Namespaces

Visual Basic 可讓您使用語句,指定全域 XML 命名空間的別名 ImportsVisual 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 命名空間別名。You can use an XML namespace alias when you access XML axis properties and declare XML literals for XML documents and elements.

您可以 XNamespace 使用GetXmlNamespace 運算子來抓取特定命名空間前置詞的物件。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

下列範例顯示如何建立 XElement 使用全域命名空間的物件 nsThe following example shows how to create an XElement object that uses the global namespace ns:

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

Console.WriteLine(contact1)

Visual Basic 編譯器會將包含 XML 命名空間別名的 XML 常值轉譯為對等的程式碼,並使用 xml 標記法搭配屬性來使用 xml 命名空間 xmlnsThe 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>
    </ns1:contact>

Console.WriteLine(contact2)

在 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