Partilhar via


Literal de elemento XML (Visual Basic)

Um literal que representa um XElement objeto.

Sintaxe

<name [ attributeList ] />
-or-
<name [ attributeList ] > [ elementContents ] </[ name ]>

Partes

  • <

    Obrigatório. Abre a marca do elemento inicial.

  • name

    Obrigatório. Nome do elemento. O formato é um dos seguintes:

    • Texto literal para o nome do elemento, do formulário [ePrefix:]eName, onde:

      Parte Description
      ePrefix Opcional. Prefixo de namespace XML para o elemento . Deve ser um namespace XML global definido com uma Imports instrução no arquivo ou no nível do projeto, ou um namespace XML local definido neste elemento ou em um elemento pai.
      eName Obrigatório. Nome do elemento. O formato é um dos seguintes:

      - Texto literal. Consulte Nomes de elementos e atributos XML declarados.
      - Expressão incorporada do formulário <%= eNameExp %>. O tipo de eNameExp deve ser String ou um tipo que é implicitamente conversível em XName.
    • Expressão incorporada do formulário <%= nameExp %>. O tipo de nameExp deve ser String ou um tipo implicitamente conversível em XName. Uma expressão incorporada não é permitida em uma marca de fechamento de um elemento.

  • attributeList

    Opcional. Lista de atributos declarados no literal.

    attribute [ attribute ... ]

    Cada attribute uma tem uma das seguintes sintaxes:

    • Atribuição de atributos, do formulário [aPrefix:]aName=aValue, em que:

      Parte Description
      aPrefix Opcional. Prefixo de namespace XML para o atributo. Deve ser um namespace XML global definido com uma Imports instrução ou um namespace XML local definido neste elemento ou em um elemento pai.
      aName Obrigatório. Nome do atributo. O formato é um dos seguintes:

      - Texto literal. Consulte Nomes de elementos e atributos XML declarados.
      - Expressão incorporada do formulário <%= aNameExp %>. O tipo de aNameExp deve ser String ou um tipo que é implicitamente conversível em XName.
      aValue Opcional. Valor do atributo. O formato é um dos seguintes:

      - Texto literal, entre aspas.
      - Expressão incorporada do formulário <%= aValueExp %>. Qualquer tipo é permitido.
    • Expressão incorporada do formulário <%= aExp %>.

  • />

    Opcional. Indica que o elemento é um elemento vazio, sem conteúdo.

  • >

    Obrigatório. Termina a marca do elemento inicial ou vazio.

  • elementContents

    Opcional. Conteúdo do elemento.

    content [ content ... ]

    Cada content um pode ser um dos seguintes:

    • Texto literal. Todo o espaço em elementContents branco torna-se significativo se houver algum texto literal.

    • Expressão incorporada do formulário <%= contentExp %>.

    • Literal do elemento XML.

    • Literal de comentário XML. Consulte Literal de comentário XML.

    • Literal de instruções de processamento XML. Consulte Literal de instruções de processamento XML.

    • XML CDATA literal. Consulte XML CDATA Literal.

  • </[name]>

    Opcional. Representa a marca de fechamento do elemento. O parâmetro opcional name não é permitido quando é o resultado de uma expressão incorporada.

Devolver Valor

Um XElement objeto.

Observações

Você pode usar a sintaxe literal do elemento XML para criar XElement objetos em seu código.

Nota

Um literal XML pode abranger várias linhas sem usar caracteres de continuação de linha. Esse recurso permite copiar o conteúdo de um documento XML e colá-lo diretamente em um programa do Visual Basic.

As expressões incorporadas do formulário <%= exp %> permitem adicionar informações dinâmicas a um literal de elemento XML. Para obter mais informações, consulte Expressões incorporadas em XML.

O compilador do Visual Basic converte o elemento XML literal em chamadas para o XElement construtor e, se for necessário, o XAttribute construtor.

XML Namespaces

Os prefixos de namespace XML são úteis quando você precisa criar literais XML com elementos do mesmo namespace muitas vezes no código. Você pode usar prefixos de namespace XML global, que você define usando a Imports instrução, ou prefixos locais, que você define usando a sintaxe de atributo xmlns:xmlPrefix="xmlNamespace" . Para obter mais informações, consulte Instrução de importação (namespace XML).

De acordo com as regras de escopo para namespaces XML, os prefixos locais têm precedência sobre os prefixos globais. No entanto, se um literal XML define um namespace XML, esse namespace não está disponível para expressões que aparecem em uma expressão incorporada. A expressão incorporada pode acessar somente o namespace XML global.

O compilador do Visual Basic converte cada namespace XML global que é usado por um literal XML em uma definição de namespace local no código gerado. Os namespaces XML globais que não são usados não aparecem no código gerado.

Exemplo 1

O exemplo a seguir mostra como criar um elemento XML simples que tem dois elementos vazios aninhados.

Dim test1 As XElement = 
<outer>
    <inner1></inner1>
    <inner2/>
</outer>

Console.WriteLine(test1)

O exemplo exibe o texto a seguir. Observe que o literal preserva a estrutura dos elementos vazios.

<outer>
  <inner1></inner1>
  <inner2 />
</outer>

Exemplo 2

O exemplo a seguir mostra como usar expressões incorporadas para nomear um elemento e criar atributos.

Dim elementType = "book"
Dim authorName = "My Author"
Dim attributeName1 = "year"
Dim attributeValue1 = 1999
Dim attributeName2 = "title"
Dim attributeValue2 = "My Book"

Dim book As XElement = 
<<%= elementType %>
    isbn="1234"
    author=<%= authorName %>
    <%= attributeName1 %>=<%= attributeValue1 %>
    <%= New XAttribute(attributeName2, attributeValue2) %>
/>

Console.WriteLine(book)

Este código exibe o seguinte texto:

<book isbn="1234" author="My Author" year="1999" title="My Book" />

Exemplo 3

O exemplo a seguir declara ns como um prefixo de namespace XML. Em seguida, ele usa o prefixo do namespace para criar um literal XML e exibe a forma final do elemento.

' Place Imports statements at the top of your program.  
Imports <xmlns:ns="http://SomeNamespace">

Class TestClass1

    Shared Sub TestPrefix()
        ' Create test using a global XML namespace prefix. 
        Dim inner2 = <ns:inner2/>

        Dim test = 
        <ns:outer>
            <ns:middle xmlns:ns="http://NewNamespace">
                <ns:inner1/>
                <%= inner2 %>
            </ns:middle>
        </ns:outer>

        ' Display test to see its final form. 
        Console.WriteLine(test)
    End Sub

End Class

Este código exibe o seguinte texto:

<ns:outer xmlns:ns="http://SomeNamespace">
  <ns:middle xmlns:ns="http://NewNamespace">
    <ns:inner1 />
    <inner2 xmlns="http://SomeNamespace" />
  </ns:middle>
</ns:outer>

Observe que o compilador converteu o prefixo do namespace XML global em uma definição de prefixo para o namespace XML. O <elemento ns:middle> redefine o prefixo do namespace XML para o <elemento ns:inner1> . No entanto, o <elemento ns:inner2> usa o namespace definido pela Imports instrução.

Consulte também