Literais de XML no Visual Basic (LINQ to XML)
Este artigo fornece informações sobre como criar árvores XML no Visual Basic usando literais do XML e expressões inseridas.
Exemplo: usar literais do XML para criar uma árvore XML
O exemplo a seguir mostra como criar um XElement, nesse caso contacts
, com literais do 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 do XML para criar um XElement com conteúdo simples
Você pode criar XElement que contém o conteúdo simples, como segue:
Dim n as XElement = <Customer>Adventure Works</Customer>
Console.WriteLine(n)
Esse exemplo gera a saída a seguir:
<Customer>Adventure Works</Customer>
Exemplo: usar um literal do XML para criar um elemento vazio
Você pode criar XElementvazia, como segue:
Dim n As XElement = <Customer/>
Console.WriteLine(n)
Esse exemplo gera a saída a seguir:
<Customer />
Usar expressões inseridas para criar conteúdo
Um recurso importante de literais XML é que permitem expressões inseridas. Expressões inseridas permite avaliar uma expressão e para inserir os resultados da expressão na árvore XML. Se a expressão avaliada como um tipo de XElement, um elemento é inserido na árvore. Se a expressão avaliada como um tipo de XAttribute, um atributo é inserido na árvore. Você pode inserir elementos e atributos na árvore apenas onde são válidos.
É importante observar que apenas uma única expressão pode entrar em uma expressão inserida. Você não pode inserir várias instruções. Se uma expressão ultrapassa de uma única linha, você deve 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 recentemente clonados são anexados a 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 deste 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)
Esse exemplo gera a saída a seguir:
<Root>
<Child>Contents</Child>
</Root>
Exemplo: usar uma expressão inserida 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)
Esse exemplo gera a saída a seguir:
<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)
Esse exemplo gera a saída a seguir:
<Root>
<Child>1</Child>
<Child>2</Child>
<Child>3</Child>
</Root>
Exemplo: usar uma expressão inserida para fornecer nomes de nó
Também é possível usar expressões inseridas para calcular nomes de atributo, valores de atributo, nomes de elemento, 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)
Esse exemplo gera a saída a seguir:
<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 quando você adiciona um elemento parented a uma árvore, e quando você adiciona um elemento sem o 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"))
Esse exemplo gera a saída a seguir:
Child1 was cloned
Child2 was attached