Visão geral dos literais XML (Visual Basic)

Um literal XML permite incorporar XML diretamente ao código do Visual Basic. A sintaxe literal XML representa LINQ to XML objetos e é semelhante à sintaxe XML 1.0. Isso facilita a criação de elementos XML e documentos programaticamente porque seu código tem a mesma estrutura que o XML final.

O Visual Basic compila literais XML em objetos LINQ to XML. LINQ to XML fornece um modelo de objeto simples para criar e manipular XML, e esse modelo se integra bem ao LINQ (Language-Integrated Query). Para obter mais informações, consulte XElement.

Você pode inserir uma expressão do Visual Basic em um literal XML. Em tempo de execução, seu aplicativo cria um objeto LINQ to XML para cada literal, incorporando os valores das expressões inseridas. Isso permite que você especifique o conteúdo dinâmico dentro de um literal XML. Para obter mais informações, consulte Expressões Inseridas em XML.

Para obter mais informações sobre as diferenças entre a sintaxe literal XML e a sintaxe XML 1.0, consulte Literais XML e a Especificação XML 1.0.

Literais Simples

Você pode criar um objeto LINQ to XML no código do Visual Basic digitando ou colando em XML válido. Um literal de elemento XML retorna um XElement objeto. Para obter mais informações, consulte literais de literal e XML do elemento XML e a especificação XML 1.0. O exemplo a seguir cria um elemento XML que tem vários elementos filho.

Dim contact1 As XElement = 
    <contact>
      <name>Patrick Hines</name>
      <phone type="home">206-555-0144</phone>
      <phone type="work">425-555-0145</phone>
    </contact>

Você pode criar um documento XML iniciando um literal XML com <?xml version="1.0"?>, conforme mostrado no exemplo a seguir. Um literal de documento XML retorna um XDocument objeto. Para saber mais, confira Literal de documento 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>

Observação

A sintaxe literal XML no Visual Basic não é idêntica à sintaxe na especificação XML 1.0. Para obter mais informações, consulte Literais XML e a Especificação XML 1.0.

Continuação de linha

Um literal XML pode abranger várias linhas sem usar caracteres de continuação de linha (a sequência space-underline-enter). Isso facilita a comparação de literais XML em código com documentos XML.

O compilador trata caracteres de continuação de linha como parte de um literal XML. Portanto, você deve usar a sequência space-underline-enter somente quando ela pertencer ao objeto LINQ to XML.

No entanto, você precisará de caracteres de continuação de linha se tiver uma expressão multilinha em uma expressão inserida. Para obter mais informações, consulte Expressões Inseridas em XML.

Inserindo consultas em literais XML

Você pode usar uma consulta em uma expressão inserida. Quando você faz isso, os elementos retornados pela consulta são adicionados ao elemento XML. Isso permite adicionar conteúdo dinâmico, como o resultado da consulta de um usuário, a um literal XML.

Por exemplo, o código a seguir usa uma consulta inserida para criar elementos XML dos membros da phoneNumbers2 matriz e, em seguida, adicionar esses elementos como filhos de 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

Como o compilador cria objetos de literais XML

O compilador do Visual Basic converte literais XML em chamadas para construtores de LINQ to XML equivalentes para compilar o objeto LINQ to XML. Por exemplo, o compilador do Visual Basic traduzirá o exemplo de código a seguir em uma chamada para o XProcessingInstruction construtor para a instrução de versão XML, chamará o XElement construtor para o <contact>, <name>e elementos, e <phone> chamará o XAttribute construtor para o type atributo. Especificamente, considerando os atributos no exemplo a seguir, o compilador do Visual Basic chamará o XAttribute(XName, Object) construtor duas vezes. O primeiro passará o valor type para o name parâmetro e o valor home do value parâmetro. O segundo também passará o valor type para o name parâmetro, mas o valor work para o value parâmetro.

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>

Confira também