XML 中內嵌的運算式 (Visual Basic)

內嵌運算式可讓您建立 XML 常值,其中包含在執行階段評估的運算式。 內嵌運算式的語法為 <%=expression%>,這與 ASP.NET 中使用的語法相同。

例如,您可建立 XML 元素常值,將內嵌運算式與常值文字內容合併。

Dim isbnNumber As String = "12345"
Dim modifiedDate As String = "3/5/2006"
Dim book As XElement = 
    <book category="fiction" isbn=<%= isbnNumber %>>
        <modifiedDate><%= modifiedDate %></modifiedDate>
    </book>

如果 isbnNumber 包含整數 12345 且 modifiedDate 包含日期 3/5/2006,則當此程式碼執行時,book 的值為:

<book category="fiction" isbn="12345">  
  <modifiedDate>3/5/2006</modifiedDate>  
</book>  

內嵌運算式位置和驗證

內嵌運算式僅可在 XML 常值運算式的特定位置中顯示。 運算式位置會控制可傳回的型別和處理 Nothing 的方式。 下表說明內嵌運算式的允許位置和型別。

常值中的位置 運算式類型 Nothing 的處理
XML 元素名稱 XName 錯誤
XML 元素內容 ObjectObject 的陣列 已忽略
XML 元素屬性名稱 XName 錯誤,除非屬性值也為 Nothing
XML 元素屬性值 Object 忽略屬性宣告
XML 元素屬性 XAttributeXAttribute 的集合 已忽略
XML 文件根項目 XElement 或一個 XElement 物件的集合,以及任意數目的 XProcessingInstructionXComment 物件 已忽略
  • XML 元素名稱中內嵌運算式的範例:

    Dim elementName As String = "contact"
    Dim contact1 As XElement = <<%= elementName %>/>
    
  • XML 元素內容中內嵌運算式的範例:

    Dim contactName As String = "Patrick Hines"
    Dim contact2 As XElement = 
      <contact><%= contactName %></contact>
    
  • XML 元素屬性名稱中內嵌運算式的範例:

    Dim phoneType As String = "home"
    Dim contact3 As XElement = 
      <contact <%= phoneType %>="206-555-0144"/>
    
  • XML 元素屬性值中內嵌運算式的範例:

    Dim phoneNumber As String = "206-555-0144"
    Dim contact4 As XElement = 
      <contact home=<%= phoneNumber %>/>
    
  • XML 元素屬性中內嵌運算式的範例:

    Dim phoneAttribute As XAttribute = 
      New XAttribute(XName.Get(phoneType), phoneNumber)
    Dim contact5 As XElement = 
      <contact <%= phoneAttribute %>/>
    
  • XML 文件根項目中內嵌運算式的範例:

    Dim document As XDocument = 
      <?xml version="1.0"?><%= contact1 %>
    

如果啟用 Option Strict,編譯器會檢查每個內嵌運算式的類型是否擴展至必要型別。 唯一的例外狀況是 XML 文件的根項目,在應用程式執行時會加以驗證。 如果您未使用 Option Strict 進行編譯,您可內嵌型別 Object 的運算式並在執行階段驗證其型別。

在內容為選擇性的位置中,會忽略包含 Nothing 的內嵌運算式。 這表示在使用 XML 常值之前,您不需要先檢查元素內容、屬性值和陣列元算是否並非 Nothing。 必要值 (例如元素和屬性名稱) 不能為 Nothing

如需在特定常值型別中使用內嵌運算式的詳細資訊,請參閱 XML 文件常值XML 元素常值

範圍規則

編譯器會將每個 XML 常值轉換成適當常值型別的建構函式呼叫。 XML 常值中的常值內容和內嵌運算式會作為引數傳遞至建構函式。 這表示 XML 常值可用的所有 Visual Basic 程式設計元素也可供其內嵌運算式使用。

在 XML 常值中,您可存取使用 Imports 陳述式宣告的 XML 命名空間前置詞。 您可使用 xmlns 屬性,在元素中宣告新的 XML 命名空間前置詞或遮蔽現有的 XML 命名空間前置詞。 新的命名空間可供該元素的子節點使用,但不適用於內嵌運算式中的 XML 常值。

注意

當您使用 xmlns 命名空間屬性宣告 XML 命名空間前置詞時,屬性值必須為常數字串。 在此情況下,使用 xmlns 屬性與使用 Imports 陳述式相似,可用於宣告 XML 命名空間。 您無法使用內嵌運算式以指定 XML 命名空間值。

另請參閱