Partilhar via


Expressões incorporadas em XML (Visual Basic)

As expressões incorporadas permitem criar literais XML que contêm expressões que são avaliadas em tempo de execução. A sintaxe de uma expressão incorporada é <%= expression %>, que é a mesma que a sintaxe usada em ASP.NET.

Por exemplo, você pode criar um elemento XML literal, combinando expressões incorporadas com conteúdo de texto literal.

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>

Se isbnNumber contém o inteiro 12345 e modifiedDate contém a data de 3/5/2006, quando este código é executado, o valor de book é:

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

Localização e validação da expressão incorporada

As expressões incorporadas podem aparecer apenas em determinados locais dentro de expressões literais XML. O local da expressão controla quais tipos a expressão pode retornar e como Nothing é tratada. A tabela a seguir descreve os locais permitidos e os tipos de expressões incorporadas.

Localização em literal Tipo de expressão Manuseamento de Nothing
Nome do elemento XML XName Erro
Conteúdo do elemento XML Object ou matriz de Object Ignorada
Nome do atributo do elemento XML XName Erro, a menos que o valor do atributo também seja Nothing
Valor do atributo do elemento XML Object Declaração de atributo ignorada
Atributo do elemento XML XAttribute ou uma coleção de XAttribute Ignorada
Elemento raiz do documento XML XElement ou uma coleção de um XElement objeto e um número arbitrário de XProcessingInstruction e XComment objetos Ignorada
  • Exemplo de uma expressão incorporada em um nome de elemento XML:

    Dim elementName As String = "contact"
    Dim contact1 As XElement = <<%= elementName %>/>
    
  • Exemplo de uma expressão incorporada no conteúdo de um elemento XML:

    Dim contactName As String = "Patrick Hines"
    Dim contact2 As XElement = 
      <contact><%= contactName %></contact>
    
  • Exemplo de uma expressão incorporada em um nome de atributo de elemento XML:

    Dim phoneType As String = "home"
    Dim contact3 As XElement = 
      <contact <%= phoneType %>="206-555-0144"/>
    
  • Exemplo de uma expressão incorporada em um valor de atributo de elemento XML:

    Dim phoneNumber As String = "206-555-0144"
    Dim contact4 As XElement = 
      <contact home=<%= phoneNumber %>/>
    
  • Exemplo de uma expressão incorporada em um atributo de elemento XML:

    Dim phoneAttribute As XAttribute = 
      New XAttribute(XName.Get(phoneType), phoneNumber)
    Dim contact5 As XElement = 
      <contact <%= phoneAttribute %>/>
    
  • Exemplo de uma expressão incorporada em um elemento raiz do documento XML:

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

Se você habilitar Option Stricto , o compilador verificará se o tipo de cada expressão incorporada se amplia para o tipo necessário. A única exceção é para o elemento raiz de um documento XML, que é verificado quando o código é executado. Se você compilar sem Option Strict, poderá incorporar expressões do tipo Object e seu tipo será verificado em tempo de execução.

Em locais onde o conteúdo é opcional, as expressões incorporadas que contêm Nothing são ignoradas. Isso significa que você não precisa verificar se o conteúdo do elemento, os valores de atributo e os elementos da matriz não Nothing estão antes de usar um literal XML. Os valores necessários, como nomes de elementos e atributos, não podem ser Nothing.

Para obter mais informações sobre como usar uma expressão incorporada em um tipo específico de literal, consulte XML Document Literal, XML Element Literal.

Regras de escopo

O compilador converte cada literal XML em uma chamada de construtor para o tipo literal apropriado. O conteúdo literal e expressões incorporadas em um literal XML são passados como argumentos para o construtor. Isso significa que todos os elementos de programação do Visual Basic disponíveis para um literal XML também estão disponíveis para suas expressões incorporadas.

Dentro de um literal XML, você pode acessar os prefixos de namespace XML declarados com a Imports instrução. Você pode declarar um novo prefixo de namespace XML ou sombrear um prefixo de namespace XML existente em um elemento usando o xmlns atributo. O novo namespace está disponível para os nós filhos desse elemento, mas não para literais XML em expressões incorporadas.

Nota

Quando você declara um prefixo de namespace XML usando o xmlns atributo namespace, o valor do atributo deve ser uma cadeia de caracteres constante. Nesse sentido, usar o xmlns atributo é como usar a Imports instrução para declarar um namespace XML. Não é possível usar uma expressão incorporada para especificar o valor do namespace XML.

Consulte também