Visão geral sobre namespaces (LINQ to XML)

Este artigo apresenta nomes XML, namespaces XML, prefixos de namespace de XML e as classes XName e XNamespace.

Os nomes XML são geralmente uma fonte de complexidade na programação XML. Um nome de XML consiste em um namespace XML (também chamado um URI de um namespace XML) e um nome local. Um namespace de XML é semelhante a um namespace em um programa .NET. Ele permite que você qualifique exclusivamente os nomes de elementos e atributos para evitar conflitos de nome entre várias partes de um documento XML. Quando você declara um namespace de XML, pode selecionar um nome local que somente deve ser exclusivo dentro desse namespace.

Outro aspecto dos nomes XML são os prefixos de namespace de XML, que causam a maior parte da complexidade dos nomes XML. Esses prefixos permite que você crie um atalho para um namespace XML, que faz o documento XML mais concisas e legível. No entanto, o significado de um prefixo XML depende do contexto, o que adiciona complexidade. Por exemplo, o prefixo aw XML pode ser associado com a um namespace de XML em parte de uma árvore XML e a um namespace diferente em outra parte.

Uma das vantagens de usar o LINQ to XML com C# é que você não precisa usar prefixos XML. Quando o LINQ to XML carrega ou analisa um documento XML, cada prefixo XML é resolvido para o namespace de XML correspondente. Após isso, quando você trabalha com um documento que usar namespaces, você acessa quase sempre namespaces com o URI de namespace, e não com o prefixo de namespace. Quando os desenvolvedores trabalham com nomes XML no LINQ to XML sempre trabalham com um nome XML totalmente qualificado (isto é, um namespace de XML e um nome local). No entanto, LINQ to XML permite que você trabalhe e controle os prefixos de namespace conforme necessário.

Ao usar o LINQ to XML com Visual Basic e literal XML, você deve usar prefixos de namespace para trabalhar com documentos nos namespaces.

No LINQ to XML, a classe que representa nomes XML é XName. Os nomes XML aparecem com frequência em toda a API do LINQ to XML e, em qualquer lugar em que um nome XML for necessário, você encontrará um parâmetro XName. No entanto, raramente você trabalha diretamente com um XName. XName contém uma conversão implícita de cadeia de caracteres.

Para obter mais informações, consulte XNamespace e XName.