Compartilhar via


Literais de XML no Visual Basic (LINQ to XML)

Este artigo fornece informações sobre como criar árvores XML no Visual Basic usando literais XML e expressões inseridas.

Exemplo: usar literais XML para criar uma árvore XML

O exemplo a seguir mostra como criar um XElement, nesse caso contacts, com literais XML:

Dim contacts As XElement = _
    <Contacts>
        <Contact>
            <Name>Patrick Hines</Name>
            <Phone>206-555-0144</Phone>
            <Address>
                <Street1>123 Main St</Street1>
                <City>Mercer Island</City>
                <State>WA</State>
                <Postal>68042</Postal>
            </Address>
        </Contact>
    </Contacts>

Exemplo: usar literais XML para criar um XElement com conteúdo simples

Você pode criar um XElement que contém conteúdo simples, conforme a seguir:

Dim n as XElement = <Customer>Adventure Works</Customer>
Console.WriteLine(n)

Este exemplo produz a seguinte saída:

<Customer>Adventure Works</Customer>

Exemplo: usar um literal do XML para criar um elemento vazio

Você pode criar um vazio XElement, da seguinte maneira:

Dim n As XElement = <Customer/>
Console.WriteLine(n)

Este exemplo produz a seguinte saída:

<Customer />

Usar expressões inseridas para criar conteúdo

Um recurso importante dos literais XML é que eles permitem expressões inseridas. Expressões inseridas permitem avaliar uma expressão e inserir os resultados da expressão na árvore XML. Se a expressão for avaliada como um tipo de XElement, um elemento será inserido na árvore. Se a expressão for avaliada como um tipo de XAttribute, um atributo será inserido na árvore. Você pode inserir elementos e atributos na árvore somente onde eles são válidos.

É importante observar que apenas uma única expressão pode entrar em uma expressão inserida. Não é possível inserir várias declarações. Se uma expressão for além de uma única linha, você deverá usar o caractere de continuação de linha.

Se você usar uma expressão inserida para adicionar nós existentes (incluindo elementos) e atributos para uma nova árvore XML e os nós existentes já parented, os nós são clonados. Os nós clonados recentemente são anexados à nova árvore XML. Se os nós existentes não tiverem parentesco, os nós serão simplesmente anexados à nova árvore XML. O último exemplo neste artigo demonstra isso.

Exemplo: usar uma expressão inserida para inserir um elemento

O exemplo a seguir usa uma expressão inserida para inserir um elemento na árvore:

xmlTree1 As XElement = _
    <Root>
        <Child>Contents</Child>
    </Root>
Dim xmlTree2 As XElement = _
    <Root>
        <%= xmlTree1.<Child> %>
    </Root>
Console.WriteLine(xmlTree2)

Este exemplo produz a seguinte saída:

<Root>
  <Child>Contents</Child>
</Root>

Exemplo: Use uma expressão embutida para conteúdo

Você pode usar uma expressão inserida para fornecer o conteúdo de um elemento:

Dim str As String
str = "Some content"
Dim root As XElement = <Root><%= str %></Root>
Console.WriteLine(root)

Este exemplo produz a seguinte saída:

<Root>Some content</Root>

Exemplo: usar uma consulta LINQ em uma expressão inserida

Você pode usar os resultados de uma consulta LINQ para fornecer o conteúdo de um elemento:

Dim arr As Integer() = {1, 2, 3}

Dim n As XElement = _
    <Root>
        <%= From i In arr Select <Child><%= i %></Child> %>
    </Root>

Console.WriteLine(n)

Este exemplo produz a seguinte saída:

<Root>
  <Child>1</Child>
  <Child>2</Child>
  <Child>3</Child>
</Root>

Exemplo: use uma expressão embutida para fornecer nomes de nós

Você também pode usar uma expressão inserida para calcular nomes de atributo, valores de atributo, nomes de elementos e valores de elemento:

Dim eleName As String = "ele"
Dim attName As String = "att"
Dim attValue As String = "aValue"
Dim eleValue As String = "eValue"
Dim n As XElement = _
    <Root <%= attName %>=<%= attValue %>>
        <<%= eleName %>>
            <%= eleValue %>
        </>
    </Root>
Console.WriteLine(n)

Este exemplo produz a seguinte saída:

<Root att="aValue">
  <ele>eValue</ele>
</Root>

Exemplo: usar uma expressão inserida para clonar e anexar nós

Como mencionado anteriormente, se você usar uma expressão inserida para adicionar nós existentes (incluindo elementos) e atributos a uma nova árvore XML, e se os nós a serem adicionados já tiverem parentesco, os nós serão clonados e os clones serão anexados à nova árvore XML. Se os nós existentes não tiverem parentesco, eles serão simplesmente anexados à nova árvore XML.

O código a seguir demonstra o comportamento ao adicionar um elemento pai a uma árvore e quando você adiciona um elemento sem pai a uma árvore.

' Create a tree with a child element.
Dim xmlTree1 As XElement = _
    <Root>
        <Child1>1</Child1>
    </Root>

' Create an element that's not parented.
Dim child2 As XElement = <Child2>2</Child2>

' Create a tree and add Child1 and Child2 to it.
Dim xmlTree2 As XElement = _
    <Root>
        <%= xmlTree1.<Child1>(0) %>
        <%= child2 %>
    </Root>

' Compare Child1 identity.
Console.WriteLine("Child1 was {0}", _
    IIf(xmlTree1.Element("Child1") Is xmlTree2.Element("Child1"), _
    "attached", "cloned"))

' Compare Child2 identity.
Console.WriteLine("Child2 was {0}", _
    IIf(child2 Is xmlTree2.Element("Child2"), _
    "attached", "cloned"))

Este exemplo produz a seguinte saída:

Child1 was cloned
Child2 was attached

Consulte também