Instrução Imports (namespace XML)

Importa prefixos do namespace de XML para uso em literais do XML e propriedades do eixo XML.

Sintaxe

Imports <xmlns:xmlNamespacePrefix = "xmlNamespaceName">

Partes

xmlNamespacePrefix
Opcional. A cadeia de caracteres pela qual elementos XML e atributos podem se referir a xmlNamespaceName. Se nenhum xmlNamespacePrefix for fornecido, o namespace de XML importado será o namespace de XML padrão. Deve ser um identificador XML válido. Para obter mais informações, confira Nomes de elementos e atributos XML declarados.

xmlNamespaceName
Obrigatórios. A cadeia de caracteres que identifica o namespace de XML que está sendo importado.

Comentários

Você pode usar a instrução Imports para definir namespaces de XML globais que podem ser usados com literais do XML e propriedades do eixo XML ou como parâmetros passados para o operador GetXmlNamespace. (Para obter informações sobre como usar a instrução Imports para importar um alias que pode ser usado onde os nomes de tipo são usados em seu código, confira Instrução Imports (tipo e namespace .NET).) A sintaxe para declarar um namespace de XML usando a instrução Imports é idêntica à sintaxe usada em XML. Portanto, você pode copiar uma declaração de namespace de um arquivo XML e usá-la em uma instrução Imports.

Prefixos de namespace de XML são úteis quando você deseja criar repetidamente elementos XML que são do mesmo namespace. O prefixo de namespace de XML declarado com a instrução Imports é global no sentido de que ele está disponível para todo o código no arquivo. Você pode usá-lo quando cria literais de elemento XML e quando acessa as propriedades do eixo XML. Para obter mais informações, confira Literal do elemento XML e Propriedades do eixo XML.

Se você definir um namespace de XML global sem um prefixo de namespace (por exemplo, Imports <xmlns="http://SomeNameSpace>"), esse namespace será considerado o namespace de XML padrão. O namespace de XML padrão é usado para literais de elemento XML ou propriedades do eixo de atributo XML que não especificam explicitamente um namespace. O namespace padrão também será usado se o namespace especificado for o namespace vazio (ou seja, xmlns=""). O namespace de XML padrão não se aplica a atributos XML em literais do XML ou a propriedades do eixo de atributo XML que não têm um namespace.

Namespaces de XML definidos em um literal do XML, que são chamados de namespaces de XML locais, têm precedência sobre namespaces de XML definidos pela instrução Imports como globais. Namespaces de XML definidos pela instrução Imports têm precedência sobre namespaces de XML importados para um projeto do Visual Basic. Se um literal do XML definir um namespace de XML, esse namespace local não se aplicará a expressões inseridas.

Os namespaces de XML globais seguem as mesmas regras de escopo e definição que os namespaces .NET Framework. Como resultado, você pode incluir uma instrução Imports para definir um namespace de XML global em qualquer lugar que possa importar um namespace .NET Framework. Isso inclui arquivos de código e namespaces importados no nível do projeto. Para obter informações sobre namespaces importados no nível do projeto, confira Página Referências, Designer de Projeto (Visual Basic).

Cada arquivo de origem pode conter qualquer número de instruções Imports. Elas devem seguir declarações de opção, como a instrução Option Strict, e devem preceder declarações de elemento de programação, como instruções Module ou Class.

Exemplo 1

O exemplo a seguir importa um namespace de XML padrão e um namespace de XML identificado com o prefixo ns. Em seguida, ele cria literais do XML que usam ambos os namespaces.

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

Module Module1

  Sub Main()
    ' Create element by using the default global XML namespace. 
    Dim inner = <innerElement/>

    ' Create element by using both the default global XML namespace
    ' and the namespace identified with the "ns" prefix.
    Dim outer = <ns:outer>
                  <ns:innerElement></ns:innerElement>
                  <siblingElement></siblingElement>
                  <%= inner %>
                </ns:outer>

    ' Display element to see its final form. 
    Console.WriteLine(outer)
  End Sub

End Module

Este código exibe o seguinte texto:

<ns:outer xmlns="http://DefaultNamespace"
          xmlns:ns="http://NewNamespace">
  <ns:innerElement></ns:innerElement>
  <siblingElement></siblingElement>
  <innerElement />
</ns:outer>

Exemplo 2

O exemplo a seguir importa o prefixo ns de namespace de XML. Em seguida, ele cria um literal do XML que usa o prefixo de namespace e exibe o formulário final do elemento.

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

Class TestClass1

    Shared Sub TestPrefix()
        ' Create test using a global XML namespace prefix. 
        Dim inner2 = <ns:inner2/>

        Dim test = 
        <ns:outer>
            <ns:middle xmlns:ns="http://NewNamespace">
                <ns:inner1/>
                <%= inner2 %>
            </ns:middle>
        </ns:outer>

        ' Display test to see its final form. 
        Console.WriteLine(test)
    End Sub

End Class

Este código exibe o seguinte texto:

<ns:outer xmlns:ns="http://SomeNamespace">
  <ns:middle xmlns:ns="http://NewNamespace">
    <ns:inner1 />
    <inner2 xmlns="http://SomeNamespace" />
  </ns:middle>
</ns:outer>

Observe que o compilador converteu o prefixo de namespace de XML de um prefixo global em uma definição de prefixo local.

Exemplo 3

O exemplo a seguir importa o prefixo ns de namespace de XML. Em seguida, ele usa o prefixo do namespace para criar um literal do XML e acessar o primeiro nó filho com o nome qualificado ns:name.

Imports <xmlns:ns = "http://SomeNamespace"> 
 
Class TestClass4

    Shared Sub TestPrefix()
        Dim contact = <ns:contact>
                        <ns:name>Patrick Hines</ns:name>
                      </ns:contact>
        Console.WriteLine(contact.<ns:name>.Value)
    End Sub

End Class

Este código exibe o seguinte texto:

Patrick Hines

Confira também