Visão geral de LINQ to XML no Visual Basic

O Visual Basic oferece suporte para LINQ to XML por meio de literais XML e propriedades do eixo XML. Isso permite que você use uma sintaxe familiar e conveniente para trabalhar com XML em seu código do Visual Basic. Literais XML permitem que você inclua XML diretamente em seu código. As propriedades do eixo XML permitem acessar nós filho, nós descendentes e atributos de um literal XML. Para obter mais informações, consulte Visão geral de literais XML e acesso a XML no Visual Basic.

LINQ to XML é uma API de programação XML na memória projetada especificamente para aproveitar Language-Integrated CONSULTA (LINQ). Embora você possa chamar as APIs LINQ diretamente, apenas o Visual Basic permite declarar literais XML e acessar diretamente as propriedades do eixo XML.

Observação

Literais XML e propriedades do eixo XML não têm suporte no código declarativo em uma página ASP.NET. Para usar recursos XML do Visual Basic, coloque seu código em uma página code-behind em seu aplicativo ASP.NET.

Play button Para demonstrações em vídeo relacionadas, confira Como faço para começar a usar LINQ to XML? e Como faço para criar planilhas do Excel usando LINQ to XML?.

Criar XML

Existem dois modos de criar árvores XML no Visual Basic. Você pode declarar um literal XML diretamente no código ou pode usar as APIs LINQ para criar a árvore. Ambos os processos permitem que o código reflita a estrutura final da árvore XML. Por exemplo, o exemplo de código a seguir cria um elemento XML:

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

Para obter mais informações, consulte Criando XML no Visual Basic.

Acessando e navegando XML

O Visual Basic fornece propriedades do eixo XML para acessar e navegar por estruturas XML. Essas propriedades permitem que você acesse elementos XML e atributos especificando os nomes de elementos filho XML. Como alternativa, você pode chamar explicitamente os métodos LINQ para navegar e localizar elementos e atributos. Por exemplo, o exemplo de código a seguir usa propriedades do eixo XML para se referir aos atributos e elementos filho de um elemento XML. O exemplo de código usa uma consulta LINQ para recuperar elementos filho e gerá-los como elementos XML, executando efetivamente uma transformação.

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

Module Sample1

    Sub SampleTransform()

        ' Create test by using a global XML namespace prefix.

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

        Dim phoneTypes =
          <phoneTypes>
              <%= From phone In contact.<ns:phone>
                  Select <type><%= phone.@ns:type %></type>
              %>
          </phoneTypes>

        Console.WriteLine(phoneTypes)
    End Sub

End Module

Para obter mais informações, consulte Acessando XML no Visual Basic.

Namespaces de XML

O Visual Basic permite que você especifique um alias para um namespace XML global usando a instrução Imports. O exemplo a seguir mostra como usar a Imports instrução para importar um namespace XML:

Imports <xmlns:ns="http://someNamespace">

Você pode usar um alias de namespace XML ao acessar propriedades do eixo XML e declarar literais XML para documentos XML e elementos.

Você pode recuperar um XNamespace objeto para um prefixo de namespace específico usando o Operador GetXmlNamespace.

Para obter mais informações, confira Instrução Imports (namespace de XML).

Usando namespaces XML em literais XML

O exemplo a seguir mostra como criar um XElement objeto que usa o namespace nsglobal:

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

Console.WriteLine(contact1)

O compilador do Visual Basic converte literais XML que contêm aliases de namespace XML em código equivalente que usa a notação XML para usar namespaces XML, com o xmlns atributo. Quando compilado, o código no exemplo da seção anterior produz essencialmente o mesmo código executável que o exemplo a seguir:

Dim contact2 As XElement = 
    <ns1:contact xmlns:ns1="http://someNamespace">
        <ns1:name>Patrick Hines</ns1:name>
        <ns1:phone type="home">206-555-0144</ns1:phone>
        <ns1:phone type="work">425-555-0145</ns1:phone>
    </ns1:contact>

Console.WriteLine(contact2)

Usando namespaces XML em propriedades do eixo XML

Namespaces XML declarados em literais XML não estão disponíveis para uso nas propriedades do eixo XML. No entanto, namespaces globais podem ser usados com as propriedades do eixo XML. Use dois-pontos para separar o prefixo de namespace XML do nome do elemento local. A seguir está um exemplo:

Console.WriteLine("Contact name is: " & contact1.<ns:name>.Value)

Confira também