XNamespace (Clase) (System.Xml.Linq)

Cambiar vista:
Sin script
Biblioteca de clases de .NET Framework
XNamespace (Clase)
Este artículo se tradujo de forma manual. Para mostrar esta página y el contenido original en inglés al mismo tiempo, cambie a Lightweight según sus preferencias de visualización.

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

Jerarquía de herencia

System.Object
  System.Xml.Linq.XNamespace

Espacio de nombres:  System.Xml.Linq
Ensamblado:  System.Xml.Linq (en System.Xml.Linq.dll)
Sintaxis

Visual Basic
Public NotInheritable Class XNamespace
C#
public sealed class XNamespace
Visual C++
public ref class XNamespace sealed
F#
[<Sealed>]
type XNamespace =  class end

El tipo XNamespace expone los siguientes miembros.

Propiedades

  Nombre Descripción
Propiedad pública Compatible con XNA Framework NamespaceName Obtiene el identificador de recursos uniforme (URI) de este espacio de nombres.
Propiedad pública Miembro estático Compatible con XNA Framework None Obtiene el objeto XNamespace que no se corresponde con ningún espacio de nombres.
Propiedad pública Miembro estático Compatible con XNA Framework Xml Obtiene el objeto XNamespace que corresponde al URI XML (http://www.w3.org/XML/1998/namespace).
Propiedad pública Miembro estático Compatible con XNA Framework Xmlns Obtiene el objeto XNamespace que corresponde al URI xmlns: (http://www.w3.org/2000/xmlns/).
Arriba
Métodos

  Nombre Descripción
Método público Compatible con XNA Framework Equals Determina si el objeto XNamespace especificado es igual al objeto XNamespace actual. (Invalida a Object.Equals(Object)).
Método protegido Compatible con XNA Framework Finalize Permite que un objeto intente liberar recursos y realizar otras operaciones de limpieza antes de ser reclamado por la recolección de elementos no utilizados. (Se hereda de Object).
Método público Miembro estático Compatible con XNA Framework Get Obtiene un XNamespace para el identificador uniforme de recursos (URI) especificado.
Método público Compatible con XNA Framework GetHashCode Obtiene el código hash de XNamespace. (Invalida a Object.GetHashCode()).
Método público Compatible con XNA Framework GetName Devuelve un objeto XName creado a partir de este XNamespace y el nombre local especificado.
Método público Compatible con XNA Framework GetType Obtiene el objeto Type de la instancia actual. (Se hereda de Object).
Método protegido Compatible con XNA Framework MemberwiseClone Crea una copia superficial del objeto Object actual. (Se hereda de Object).
Método público Compatible con XNA Framework ToString Devuelve el URI de este XNamespace. (Invalida a Object.ToString()).
Arriba
Operadores

  Nombre Descripción
Operador público Miembro estático Compatible con XNA Framework Addition Combina un objeto XNamespace con un nombre local para crear un XName.
Operador público Miembro estático Compatible con XNA Framework Equality Devuelve un valor que indica si dos instancias de XNamespace son iguales.
Operador público Miembro estático Compatible con XNA Framework Implicit(String to XNamespace) Convierte una cadena que contiene un identificador uniforme de recursos (URI) en un XNamespace.
Operador público Miembro estático Compatible con XNA Framework Inequality Devuelve un valor que indica si dos instancias de XNamespace no son iguales.
Arriba
Comentarios

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

Cada XName contiene un XNamespace. Aun cuando un elemento no esté en un espacio de nombres, el XName del elemento todavía contendrá un espacio de nombres, XNamespace.None. Se garantiza que la propiedad XName.Namespace no es null.

Creación de un objeto XNamespace

La manera más común de crear un objeto XNamespace es simplemente asignarle una cadena. Puede combinar el espacio de nombres con un nombre local utilizando la invalidación del operador de suma. Esta expresión se muestra en el siguiente ejemplo.

C#
XNamespace aw = "http://www.adventure-works.com";
XElement root = new XElement(aw + "Root", "Content");
Console.WriteLine(root);
Visual Basic
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 se declara un espacio de nombres predeterminado global, como se detalla a continuación:

Visual Basic
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.

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

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

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

Para obtener más información sobre cómo utilizar los espacios de nombres en Visual Basic, vea Espacios de nombres en Visual Basic (LINQ to XML).

Control de prefijos de espacio de nombres

Si crea un atributo que declara un espacio de nombres, se conservará en el XML serializado el prefijo especificado en el atributo. Para crear un atributo que declara un espacio de nombres con un prefijo, puede crear un atributo donde el espacio de nombres del nombre del atributo es Xmlns y el nombre del atributo es el prefijo del espacio de nombres. El valor del atributo es el URI del espacio de nombres. Esta expresión se muestra en el siguiente ejemplo.

C#
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);
Visual Basic
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 se utiliza una declaración de espacio de nombres global:

Visual Basic
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 prefijos de espacios de nombres (C#) (LINQ to XML).

Creación de un espacio de nombres predeterminado

Al construir un atributo que va a ser un espacio de nombres, si el nombre de atributo tiene el valor especial de "xmlns", cuando se serializa el árbol XML, el espacio de nombres se declara como el espacio de nombres predeterminado. El atributo especial con el nombre de "xmlns" en sí no es 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 que se declara de tal manera que el espacio de nombres se convertirá en el espacio de nombres predeterminado:

C#
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);
Visual Basic
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 se utiliza una declaración de espacio de nombres predeterminada global:

Visual Basic
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>

Subdivisión de XNamespace

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

Utilización de nombres expandidos

Otra manera de especificar un espacio de nombres y un nombre local es utilizar un nombre expandido en la forma de {namespace}name:

[C#]

XElement e = new XElement("{http://www.adventure-works.com}Root",
     new XAttribute("{http://www.adventure-works.com}Att", "content")
);
Console.WriteLine(e);
Visual Basic
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 pasa una cadena que contiene un nombre expandido a LINQ to XML, debe analizar el nombre, buscar el espacio de nombres subdividido y buscar el nombre subdividido. Este proceso consume tiempo de la CPU. Si es importante el rendimiento, quizá prefiera utilizar otro enfoque.

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

Información de versión

.NET Framework

Compatible con: 4, 3.5

.NET Framework Client Profile

Compatible con: 4, 3.5 SP1
Plataformas

Windows 7, Windows Vista SP1 o posterior, Windows XP SP3, Windows Server 2008 (no se admite Server Core), Windows Server 2008 R2 (se admite Server Core con SP1 o posterior), Windows Server 2003 SP2

.NET Framework no admite todas las versiones de todas las plataformas. Para obtener una lista de las versiones compatibles, vea Requisitos de sistema de .NET Framework.
Seguridad para subprocesos

Todos los miembros static (Shared en Visual Basic) públicos de este tipo son seguros para la ejecución de subprocesos. No se garantiza que los miembros de instancias sean seguros para la ejecución de subprocesos.
Vea también

Referencia

Otros recursos