Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
Um dos principais recursos de literais XML no Visual Basic é a capacidade de declarar namespaces XML usando a Imports instrução. Usando esse recurso, você pode declarar um namespace XML que usa um prefixo ou pode declarar um namespace XML padrão.
Essa funcionalidade é útil em duas situações:
- Namespaces declarados em literais XML não se aplicam a expressões inseridas. Declarar namespaces globais reduz a quantidade de trabalho necessária para usar expressões inseridas com namespaces.
- Você deve declarar namespaces globais para usar namespaces com propriedades XML.
Você pode declarar namespaces globais no nível do projeto. Você também pode declarar namespaces globais no nível do módulo, o que substitui os namespaces globais no nível do projeto. Finalmente, você pode substituir namespaces globais em um literal XML.
Ao usar literais XML ou propriedades XML que estão em namespaces declarados globalmente, você pode ver o nome expandido de literais XML ou propriedades passando o mouse sobre eles no Visual Studio. Você verá o nome expandido em um tooltip.
Você pode obter um XNamespace objeto que corresponda a um namespace global usando o GetXmlNamespace método.
Exemplo: Usar Imports para declarar um namespace global
O exemplo a seguir declara um namespace global padrão com a instrução Imports e, em seguida, inicializa um objeto XElement nesse namespace utilizando um literal XML:
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = <Root/>
Console.WriteLine(root)
End Sub
End Module
Este exemplo produz a seguinte saída:
<Root xmlns="http://www.adventure-works.com" />
Exemplo: declarar um namespace global que tenha um prefixo
O próximo exemplo declara um namespace global com um prefixo e inicializa um elemento com um literal de XML:
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = <aw:Root/>
Console.WriteLine(root)
End Sub
End Module
Este exemplo produz a seguinte saída:
<aw:Root xmlns:aw="http://www.adventure-works.com" />
Exemplo: declarar um namespace padrão e usar uma expressão inserida para o Child elemento
Namespaces que são declarados em literais do XML não são transferidos para expressões inseridas. O exemplo a seguir declara um namespace padrão e usa uma expressão inserida para o Child elemento.
Dim root As XElement = _
<Root xmlns="http://www.adventure-works.com">
<%= <Child/> %>
</Root>
Console.WriteLine(root)
Este exemplo produz a seguinte saída:
<Root xmlns="http://www.adventure-works.com">
<Child xmlns="" />
</Root>
O XML resultante inclui uma declaração de um namespace padrão para que o Child elemento não esteja no namespace.
Você pode declarar um namespace diferente na expressão inserida, da seguinte maneira:
Dim root As XElement = _
<Root xmlns="http://www.adventure-works.com">
<%= <Child xmlns="http://www.adventure-works.com"/> %>
</Root>
Console.WriteLine(root)
Este exemplo produz a seguinte saída:
<Root xmlns="http://www.adventure-works.com">
<Child xmlns="http://www.adventure-works.com" />
</Root>
No entanto, com o namespace padrão global, você pode usar literais XML sem declarar namespaces. O XML resultante estará no namespace padrão declarado globalmente, como neste exemplo:
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = <Root>
<%= <Child/> %>
</Root>
Console.WriteLine(root)
End Sub
End Module
Este exemplo produz a seguinte saída:
<Root xmlns="http://www.adventure-works.com">
<Child />
</Root>
Exemplo: usar namespaces com propriedades XML
Se você estiver trabalhando com uma árvore XML que está em um namespace e usar propriedades XML, deverá usar um namespace global para que as propriedades XML também estejam no namespace correto. O exemplo a seguir declara uma árvore XML em um namespace e imprime a contagem de Child elementos.
Dim root As XElement = _
<Root xmlns="http://www.adventure-works.com">
<Child>content</Child>
</Root>
Console.WriteLine(root.<Child>.Count())
Este exemplo indica que não há Child elementos. Ele produz esta saída:
0
No entanto, se você declarar um namespace global padrão, tanto o literal XML quanto a propriedade XML estarão dentro desse namespace padrão.
Imports <xmlns="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = _
<Root>
<Child>content</Child>
</Root>
Console.WriteLine(root.<Child>.Count())
End Sub
End Module
Este exemplo indica que há um Child elemento. Ele produz esta saída:
1
Se você declarar um namespace global que tenha um prefixo, poderá usar o prefixo para literais XML e propriedades XML:
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = _
<aw:Root>
<aw:Child>content</aw:Child>
</aw:Root>
Console.WriteLine(root.<aw:Child>.Count())
End Sub
End Module
Exemplo: Usar GetXmlNamespace para obter um XNamespace
Você pode obter um XNamespace objeto usando o GetXmlNamespace método:
Imports <xmlns:aw="http://www.adventure-works.com">
Module Module1
Sub Main()
Dim root As XElement = <aw:Root/>
Dim xn As XNamespace = GetXmlNamespace(aw)
Console.WriteLine(xn)
End Sub
End Module
Este exemplo produz a seguinte saída:
http://www.adventure-works.com