Partilhar via


Visão geral do LINQ to XML no Visual Basic

Visual Basic fornece suporte para LINQ to XML através de literais XML e propriedades de eixo XML. Isso permite que você use uma sintaxe familiar e conveniente para trabalhar com XML em seu código do Visual Basic. Os literais XML permitem que você inclua XML diretamente em seu código. As propriedades do eixo XML permitem que você acesse 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 Acessando XML no Visual Basic.

LINQ to XML é uma API de programação XML na memória projetada especificamente para tirar proveito do LINQ (Language-Integrated Query). Embora você possa chamar as APIs LINQ diretamente, somente o Visual Basic permite que você declare literais XML e acesse diretamente as propriedades do eixo XML.

Nota

Não há suporte para literais XML e propriedades de eixo XML em 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, consulte Como faço para começar a usar o LINQ to XML? e Como criar planilhas do Excel usando LINQ to XML?.

Criando XML

Há duas maneiras de criar árvores XML no Visual Basic. Você pode declarar um literal XML diretamente no código ou pode usar as APIs do 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 em XML

Visual Basic fornece propriedades de eixo XML para acessar e navegar em estruturas XML. Essas propriedades permitem que você acesse elementos e atributos XML 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 de 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.

XML Namespaces

Visual Basic permite que você especifique um alias para um namespace XML global usando a Imports instrução. 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 e elementos XML.

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

Para obter mais informações, consulte Instrução de importação (namespace 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 traduz 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 de eixo XML

Os 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 do namespace XML do nome do elemento local. Segue-se um exemplo:

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

Consulte também