XNamespace Classe

Definição

Representa um namespace XML. Essa 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

Comentários

Essa 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 propriedade XName.Namespace é 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 este idioma:

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, normalmente você 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.

Veja como criar um documento com namespaces em C# (LINQ to XML) para obter mais informações e exemplos.

Consulte Work with XML namespaces 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á mantido no XML serializado. Para criar um atributo que declara um namespace com um prefixo, você cria um atributo em que o namespace do nome do atributo está Xmlnse o nome do atributo é o prefixo do namespace. O valor do atributo é o URI do namespace. O exemplo a seguir mostra este idioma:

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 forma que o namespace se torne 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 do XNamespace

XNamespace os objetos têm a garantia de serem 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 essa finalidade.

Usar nomes expandidos

Outra maneira de especificar um namespace e um nome local é usar um nome expandido no formulário {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" />

Essa abordagem tem implicações de desempenho. Cada vez que você passa uma cadeia de caracteres que contém um nome expandido para LINQ para XML, ela deve analisar o nome, localizar o namespace atomizado e encontrar o nome atomizado. Esse processo leva tempo de CPU. Se o desempenho for importante, talvez você queira usar uma abordagem diferente.

Com o Visual Basic, a abordagem recomendada é usar literais XML, o que não envolve o uso de nomes expandidos.

Propriedades

Nome Description
NamespaceName

Obtém o URI (Uniform Resource Identifier) desse namespace.

None

Obtém o XNamespace objeto que corresponde a nenhum namespace.

Xml

Obtém o XNamespace objeto que corresponde ao URI XML (http://www.w3.org/XML/1998/namespace).

Xmlns

Obtém o XNamespace objeto que corresponde ao URI xmlns (http://www.w3.org/2000/xmlns/).

Métodos

Nome Description
Equals(Object)

Determina se o especificado XNamespace é igual ao atual XNamespace.

Get(String)

Obtém um XNamespace para o URI (Uniform Resource Identifier) especificado.

GetHashCode()

Obtém um código hash para isso XNamespace.

GetName(String)

Retorna um XName objeto criado com base nisso XNamespace e no nome local especificado.

GetType()

Obtém o Type da instância atual.

(Herdado de Object)
MemberwiseClone()

Cria uma cópia superficial do Objectatual.

(Herdado de Object)
ToString()

Retorna o URI deste XNamespace.

Operadores

Nome Description
Addition(XNamespace, String)

Combina um XNamespace objeto com um nome local para criar um XName.

Equality(XNamespace, XNamespace)

Retorna um valor que indica se duas instâncias são XNamespace iguais.

Implicit(String to XNamespace)

Converte uma cadeia de caracteres que contém um URI (Uniform Resource Identifier) em um XNamespace.

Inequality(XNamespace, XNamespace)

Retorna um valor que indica se duas instâncias não são iguais XNamespace .

Aplica-se a

Confira também