XNamespace Classe
Definição
Importante
Algumas informações dizem respeito a um produto pré-lançado que pode ser substancialmente modificado antes de ser lançado. A Microsoft não faz garantias, de forma expressa ou implícita, em relação à informação aqui apresentada.
Representa um namespace XML. Esta classe não pode ser herdada.
public ref class XNamespace sealed
public sealed class XNamespace
type XNamespace = class
Public NotInheritable Class XNamespace
- Herança
-
XNamespace
Observações
Esta classe representa a construção XML de namespaces.
Cada XName contém um XNamespace. Mesmo que um elemento não esteja em um namespace, o elemento XName ainda contém um namespace, XNamespace.None. A XName.Namespace propriedade é garantida para não ser null.
Criar um objeto XNamespace
A maneira mais comum de criar um XNamespace objeto é simplesmente atribuir uma cadeia de caracteres a ele. Em seguida, você pode combinar o namespace com um nome local usando a substituição do operador de adição. O exemplo a seguir mostra essa linguagem:
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root", "Content");
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", "Content")
Console.WriteLine(root)
No entanto, no Visual Basic, você normalmente declararia um namespace padrão global, da seguinte maneira:
Imports <xmlns='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<Root>Content</Root>
Console.WriteLine(root)
End Sub
End Module
Este exemplo produz a seguinte saída:
<Root xmlns="http://www.adventure-works.com">Content</Root>
Atribuir uma cadeia de caracteres a um XNamespace usa a conversão implícita de String.
Consulte Como criar um documento com namespaces em C# (LINQ to XML) para obter mais informações e exemplos.
Consulte Trabalhar com namespaces XML para obter mais informações sobre como usar namespaces no Visual Basic.
Controlar prefixos de namespace
Se você criar um atributo que declare um namespace, o prefixo especificado no atributo será persistido no XML serializado. Para criar um atributo que declara um namespace com um prefixo, crie um atributo onde o namespace do nome do atributo é Xmlns, e o nome do atributo é o prefixo do namespace. O valor do atributo é o URI do namespace. O exemplo a seguir mostra essa linguagem:
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),
"Content");
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", _
New XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"), _
"Content")
Console.WriteLine(root)
No Visual Basic, em vez de criar um nó de namespace para controlar prefixos de namespace, você normalmente usaria uma declaração de namespace global:
Imports <xmlns:aw='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<aw:Root>Content</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">Content</aw:Root>
Para obter mais informações, consulte Como controlar prefixos de namespace.
Criar um namespace padrão
Ao construir um atributo que será um namespace, se o nome do atributo tiver o valor especial de "xmlns", quando a árvore XML for serializada, o namespace será declarado como o namespace padrão. O atributo especial com o nome de "xmlns" em si não está em nenhum namespace. O valor do atributo é o URI do namespace.
O exemplo a seguir cria uma árvore XML que contém um atributo que é declarado de tal forma que o namespace se tornará o namespace padrão:
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root",
new XAttribute("xmlns", "http://www.adventure-works.com"),
new XElement(aw + "Child", "content")
);
Console.WriteLine(root);
Dim aw As XNamespace = "http://www.adventure-works.com"
Dim root As XElement = New XElement(aw + "Root", _
New XAttribute("xmlns", "http://www.adventure-works.com"), _
New XElement(aw + "Child", "content") _
)
Console.WriteLine(root)
No Visual Basic, em vez de criar um nó de namespace para criar um namespace padrão, você normalmente usaria uma declaração de namespace padrão global:
Imports <xmlns='http://www.adventure-works.com'>
Module Module1
Sub Main()
Dim root As XElement = _
<Root>
<Child>content</Child>
</Root>
Console.WriteLine(root)
End Sub
End Module
Este exemplo produz a seguinte saída:
<Root xmlns="http://www.adventure-works.com">
<Child>content</Child>
</Root>
Atomização de XNamespace
XNamespace é garantido que os objetos sejam atomizados; ou seja, se dois XNamespace objetos tiverem exatamente o mesmo URI, eles compartilharão a mesma instância. Os operadores de igualdade e comparação são fornecidos explicitamente para este fim.
Usar nomes expandidos
Outra maneira de especificar um namespace e um nome local é usar um nome expandido no formato {namespace}name:
XElement e = new XElement("{http://www.adventure-works.com}Root",
new XAttribute("{http://www.adventure-works.com}Att", "content")
);
Console.WriteLine(e);
Dim e As XElement = New XElement("{http://www.adventure-works.com}Root", _
New XAttribute("{http://www.adventure-works.com}Att", "content") _
)
Console.WriteLine(e)
Este exemplo produz a seguinte saída:
<Root p1:Att="content" xmlns:p1="http://www.adventure-works.com" xmlns="http://www.adventure-works.com" />
Esta abordagem tem implicações no desempenho. Cada vez que você passa uma cadeia de caracteres que contém um nome expandido para LINQ to XML, ele deve analisar o nome, localizar o namespace atomizado e localizar o nome atomizado. Este processo leva tempo de CPU. Se o desempenho for importante, convém usar uma abordagem diferente.
Com o Visual Basic, a abordagem recomendada é usar literais XML, que não envolvem o uso de nomes expandidos.
Propriedades
| Name | Descrição |
|---|---|
| NamespaceName |
Obtém o Identificador Uniforme de Recursos (URI) deste espaço de nomes. |
| None |
Obtém o XNamespace objeto que não corresponde a nenhum namespace. |
| Xml |
Obtém o XNamespace objeto que corresponde ao URI XML ( |
| Xmlns |
Obtém o XNamespace objeto que corresponde ao URI xmlns ( |
Métodos
| Name | Descrição |
|---|---|
| Equals(Object) |
Determina se o especificado XNamespace é igual à corrente XNamespace. |
| Get(String) |
Obtém um XNamespace para o Identificador Uniforme de Recursos (URI) especificado. |
| GetHashCode() |
Obtém um código de hash para isto XNamespace. |
| GetName(String) |
Devolve um XName objeto criado a partir deste XNamespace e do nome local especificado. |
| GetType() |
Obtém o Type da instância atual. (Herdado de Object) |
| MemberwiseClone() |
Cria uma cópia superficial do atual Object. (Herdado de Object) |
| ToString() |
Devolve o URI deste XNamespace. |
Operadores
| Name | Descrição |
|---|---|
| Addition(XNamespace, String) |
Combina um XNamespace objeto com um nome local para criar um XName. |
| Equality(XNamespace, XNamespace) |
Devolve um valor que indica se duas instâncias de XNamespace são iguais. |
| Implicit(String to XNamespace) |
Converte uma cadeia contendo um Identificador Uniforme de Recursos (URI) para um XNamespace. |
| Inequality(XNamespace, XNamespace) |
Devolve um valor que indica se duas instâncias de XNamespace não são iguais. |