XML 常值概觀 (Visual Basic)

「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 Query (LINQ) 密切整合。 如需詳細資訊,請參閱XElement

您可以在 XML 常值中內嵌 Visual Basic 運算式。 在執行階段,您的應用程式會為每個常值建立 LINQ to XML 物件,並納入內嵌運算式的值。 這可讓您指定 XML 常值內的動態內容。 如需詳細資訊,請參閱 XML 中的內嵌運算式

如需了解 XML 常值語法和 XML 1.0 語法之間差異的詳細資訊,請參閱 XML 常值和 XML 1.0 規格

簡單常值

您可以在 Visual Basic 程式碼中建立 LINQ to XML 物件,方法是輸入或貼上有效的 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 常值可跨越多行,而無需使用續行字元 (空格-底線-Enter 順序)。 如此一來便可更輕鬆地比較程式碼中的 XML 常值以及 XML 文件。

編譯器會將續行字元視作 XML 常值的一部分。 因此,只有當續行字元位於 LINQ to XML 物件時,您才可以使用空格-底線-Enter 順序。

不過,若您在內嵌運算式中有多行的運算式,則仍需要續行字元。 如需詳細資訊,請參閱 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) 建構函式。 第一次會針對 name 參數傳遞值 type,以及針對 value 參數傳遞值 home。 第二次也會針對 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>

另請參閱