XNamespace Clase

Definición

Representa un espacio de nombres XML. Esta clase no puede heredarse.

public ref class XNamespace sealed
public sealed class XNamespace
type XNamespace = class
Public NotInheritable Class XNamespace
Herencia
XNamespace

Comentarios

Esta clase representa la construcción XML de espacios de nombres.

Cada XName contiene un XNamespace. Incluso si un elemento no está en un espacio de nombres, el elemento XName todavía contiene un espacio de nombres, XNamespace.None. Se garantiza que la propiedad XName.Namespace no sea null.

Creación de un objeto XNamespace

La forma más común de crear un XNamespace objeto es simplemente asignarle una cadena. A continuación, puede combinar el espacio de nombres con un nombre local mediante la invalidación del operador de suma. En el ejemplo siguiente se muestra esta expresión:

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)

Sin embargo, en Visual Basic, normalmente declararía un espacio de nombres predeterminado global, como se indica a continuación:

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 ejemplo produce el siguiente resultado:

<Root xmlns="http://www.adventure-works.com">Content</Root>

La asignación de una cadena a un XNamespace utiliza la conversión implícita de String.

Consulte Cómo crear un documento con espacios de nombres en C# (LINQ to XML) para obtener más información y ejemplos.

Consulte Trabajar con espacios de nombres XML para obtener más información sobre el uso de espacios de nombres en Visual Basic.

Control de prefijos de espacio de nombres

Si crea un atributo que declara un espacio de nombres, el prefijo especificado en el atributo se conservará en el XML serializado. Para crear un atributo que declare un espacio de nombres con un prefijo, cree un atributo donde el espacio de nombres del nombre del atributo es Xmlnsy el nombre del atributo es el prefijo del espacio de nombres. El valor del atributo es el URI del espacio de nombres. En el ejemplo siguiente se muestra esta expresión:

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)

En Visual Basic, en lugar de crear un nodo de espacio de nombres para controlar los prefijos de espacio de nombres, normalmente usaría una declaración de espacio de nombres 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 ejemplo produce el siguiente resultado:

<aw:Root xmlns:aw="http://www.adventure-works.com">Content</aw:Root>

Para obtener más información, vea Cómo controlar los prefijos del espacio de nombres.

Creación de un espacio de nombres predeterminado

Al construir un atributo que será un espacio de nombres, si el nombre del atributo tiene el valor especial de "xmlns", cuando se serializa el árbol XML, el espacio de nombres se declarará como espacio de nombres predeterminado. El atributo especial con el nombre de "xmlns" no está en ningún espacio de nombres. El valor del atributo es el URI del espacio de nombres.

En el ejemplo siguiente se crea un árbol XML que contiene un atributo declarado de tal manera que el espacio de nombres se convertirá en el espacio de nombres predeterminado:

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)

En Visual Basic, en lugar de crear un nodo de espacio de nombres para crear un espacio de nombres predeterminado, normalmente usaría una declaración de espacio de nombres predeterminado 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 ejemplo produce el siguiente resultado:

<Root xmlns="http://www.adventure-works.com">
  <Child>content</Child>
</Root>

Atomización de XNamespace

XNamespace se garantiza que los objetos se atomizan; es decir, si dos XNamespace objetos tienen exactamente el mismo URI, compartirán la misma instancia. Los operadores de igualdad y comparación se proporcionan explícitamente para este propósito.

Usar nombres expandidos

Otra manera de especificar un espacio de nombres y un nombre local es usar un nombre expandido con el 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 ejemplo produce el siguiente resultado:

<Root p1:Att="content" xmlns:p1="http://www.adventure-works.com" xmlns="http://www.adventure-works.com" />

Este enfoque tiene implicaciones de rendimiento. Cada vez que pase una cadena que contenga un nombre expandido a LINQ to XML, debe analizar el nombre, buscar el espacio de nombres atomizado y buscar el nombre atomizado. Este proceso tarda tiempo en la CPU. Si el rendimiento es importante, es posible que quiera usar un enfoque diferente.

Con Visual Basic, el enfoque recomendado es usar literales XML, que no implican el uso de nombres expandidos.

Propiedades

Nombre Description
NamespaceName

Obtiene el identificador uniforme de recursos (URI) de este espacio de nombres.

None

Obtiene el XNamespace objeto que corresponde a ningún espacio de nombres.

Xml

Obtiene el XNamespace objeto que corresponde al URI XML (http://www.w3.org/XML/1998/namespace).

Xmlns

Obtiene el XNamespace objeto que corresponde al URI xmlns (http://www.w3.org/2000/xmlns/).

Métodos

Nombre Description
Equals(Object)

Determina si el objeto especificado XNamespace es igual al objeto actual XNamespace.

Get(String)

Obtiene un XNamespace para el identificador uniforme de recursos (URI) especificado.

GetHashCode()

Obtiene un código hash para este XNamespaceobjeto .

GetName(String)

Devuelve un XName objeto creado a partir de este XNamespace y el nombre local especificado.

GetType()

Obtiene el Type de la instancia actual.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Objectactual.

(Heredado de Object)
ToString()

Devuelve el URI de este XNamespace.

Operadores

Nombre Description
Addition(XNamespace, String)

Combina un XNamespace objeto con un nombre local para crear un XNameobjeto .

Equality(XNamespace, XNamespace)

Devuelve un valor que indica si dos instancias de XNamespace son iguales.

Implicit(String to XNamespace)

Convierte una cadena que contiene un identificador uniforme de recursos (URI) en un XNamespace.

Inequality(XNamespace, XNamespace)

Devuelve un valor que indica si dos instancias de XNamespace no son iguales.

Se aplica a

Consulte también