Visual Basic 中的 LINQ to XML 概觀

Visual Basic 透過 XML 常值和 XML 軸屬性支援 LINQ to XML。 這可讓您使用熟悉且方便的語法,在 Visual Basic 程式碼中使用 XML。 「XML 常值」可讓您直接在程式碼中包含 XML。 「XML 軸屬性」可讓您存取 XML 常值的子節點、子代節點和屬性。 如需詳細資訊,請參閱 XML 常值概觀在 Visual Basic 中存取 XML

LINQ to XML 是記憶體內部 XML 程式設計 API,專為利用 Language-Integrated Query (LINQ) 所設計。 雖然您可以直接呼叫 LINQ API,但只有 Visual Basic 可讓您宣告 XML 常值,並直接存取 XML 軸屬性。

注意

ASP.NET 頁面中的宣告式程式碼不支援 XML 常值和 XML 軸屬性。 若要使用 Visual Basic XML 功能,請將程式碼放在 ASP.NET 應用程式的程式碼後置頁面中。

Play button 如需相關的示範影片,請參閱如何開始使用 LINQ to XML?,以及如何使用 LINQ to XML 建立 Excel 試算表?

建立 XML

在 Visual Basic 中建立 XML 樹狀結構的方法有兩種。 您可以直接在程式碼中宣告 XML 常值,或您可以使用 LINQ API 建立樹狀結構。 這兩個流程都能讓程式碼反映 XML 樹狀結構的最終結構。 例如,下列程式碼範例會建立 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>

如需詳細資訊,請參閱在 Visual Basic 中建立 XML

存取和巡覽 XML

Visual Basic 提供 XML 軸屬性來存取和巡覽 LINQ to XML 結構。 這些屬性可讓您藉由指定 XML 子元素名稱來存取 XML 元素和屬性。 或者,您可以明確呼叫 LINQ 方法,巡覽和尋找元素和屬性。 例如,下列程式碼範例會使用 XML 軸屬性來參考 XML 元素的屬性和子元素。 此程式碼範例會使用 LINQ 查詢來擷取子元素並輸出為 XML 元素,有效地執行轉換。

' 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 中存取 XML

XML 命名空間

Visual Basic 可讓您使用 Imports 陳述式指定全域 XML 命名空間的別名。 下列範例示範如何使用 Imports 陳述式匯入 XML 命名空間:

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

當您存取 XML 軸屬性並宣告 XML 文件和元素的 XML 常值時,您可以使用 XML 命名空間別名。

您可以使用 GetXmlNamespace 運算子,擷取特定命名空間前置詞的 XNamespace 物件。

如需詳細資訊,請參閱 Imports 陳述式 (XML 命名空間)

使用 XML 常值中的 XML 命名空間

下列範例示範如何建立使用全域命名空間 nsXElement 物件:

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 命名空間搭配 xmlns 屬性的對等程式碼。 編譯後,上一節範例中的程式碼基本上會產生與下列範例相同的可執行程式碼:

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 命名空間

XML 常值中宣告的 XML 命名空間不適用於 XML 軸屬性。 不過,全域命名空間可以與 XML 軸屬性搭配使用。 請使用冒號分隔 XML 命名空間前置詞與區域元素名稱。 以下是一個範例:

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

另請參閱