XNamespace Clase

Definición

Representa un espacio de nombres XML.Represents an XML namespace. Esta clase no puede heredarse.This class cannot be inherited.

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 los espacios de nombres.This class represents the XML construct of namespaces.

Cada XName contiene un XNamespace.Every XName contains an 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.Even if an element is not in a namespace, the element's XName still contains a namespace, XNamespace.None. Se garantiza que la propiedad XName.Namespace no sea null.The XName.Namespace property is guaranteed to not be null.

Creación de un objeto XNamespaceCreating an XNamespace Object

La forma más común de crear un objeto XNamespace es simplemente asignarle una cadena.The most common way to create an XNamespace object is to simply assign a string to it. A continuación, puede combinar el espacio de nombres con un nombre local mediante la invalidación del operador de suma.You can then combine the namespace with a local name by using the override of the addition operator. En el ejemplo siguiente se muestra esta expresión:The following example shows this idiom:

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 se declararía un espacio de nombres predeterminado global, como se indica a continuación:However, in Visual Basic, you would typically declare a global default namespace, as follows:

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:This example produces the following output:

<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.Assigning a string to an XNamespace uses the implicit conversion from String.

Vea Cómo: crear un documento con espacios de nombres (C#) (LINQ to XML) para obtener más información y ejemplos.See How to: Create a Document with Namespaces (C#) (LINQ to XML) for more information and examples.

Vea espacios de nombres en Visual Basic (LINQ to XML) para obtener más información sobre el uso de espacios de nombres en Visual Basic.See Namespaces in Visual Basic (LINQ to XML) for more information on using namespaces in Visual Basic.

Controlar prefijos de espacios de nombresControlling Namespace Prefixes

Si crea un atributo que declara un espacio de nombres, el prefijo especificado en el atributo se conservará en el XML serializado.If you create an attribute that declares a namespace, the prefix specified in the attribute will be persisted in the serialized XML. 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.To create an attribute that declares a namespace with a prefix, you create an attribute where the namespace of the name of the attribute is Xmlns, and the name of the attribute is the namespace prefix. El valor del atributo es el URI del espacio de nombres.The value of the attribute is the URI of the namespace. En el ejemplo siguiente se muestra esta expresión:The following example shows this idiom:

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 espacios de nombres, normalmente se usaría una declaración de espacio de nombres global:In Visual Basic, instead of creating a namespace node to control namespace prefixes, you would typically use a global namespace declaration:

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:This example produces the following output:

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

Para obtener más información, vea Cómo: controlar prefijos deC#espacios de nombres () (LINQ to XML).For more information, see How to: Control Namespace Prefixes (C#) (LINQ to XML).

Crear un espacio de nombres predeterminadoCreating a Default Namespace

Al construir un atributo que será un espacio de nombres, si el nombre del atributo tiene el valor especial de "xmlns", cuando se serialice el árbol XML, el espacio de nombres se declarará como el espacio de nombres predeterminado.When constructing an attribute that will be a namespace, if the attribute name has the special value of "xmlns", then when the XML tree is serialized, the namespace will be declared as the default namespace. El atributo especial con el nombre "xmlns" no se encuentra en ningún espacio de nombres.The special attribute with the name of "xmlns" itself is not in any namespace. El valor del atributo es el URI del espacio de nombres.The value of the attribute is the namespace URI.

En el ejemplo siguiente se crea un árbol XML que contiene un atributo que se declara de manera que el espacio de nombres se convierta en el espacio de nombres predeterminado:The following example creates an XML tree that contains an attribute that is declared in such a way that the namespace will become the default namespace:

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:In Visual Basic, instead of creating a namespace node to create a default namespace, you would typically use a global default namespace declaration:

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:This example produces the following output:

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

Atomización de XNamespaceXNamespace Atomization

se garantiza que los objetos XNamespace se van a atomizar; es decir, si dos objetos XNamespace tienen exactamente el mismo URI, compartirán la misma instancia.XNamespace objects are guaranteed to be atomized; that is, if two XNamespace objects have exactly the same URI, they will share the same instance. Los operadores de comparación y igualdad se proporcionan explícitamente para este fin.The equality and comparison operators are provided explicitly for this purpose.

Usar nombres expandidosUsing Expanded Names

Otra manera de especificar un espacio de nombres y un nombre local es usar un nombre expandido con el formato {namespace}name:Another way to specify a namespace and a local name is to use an expanded name in the form {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:This example produces the following output:

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

Este método tiene implicaciones en el rendimiento.This approach has performance implications. Cada vez que pasa una cadena que contiene un nombre expandido a LINQ to XMLLINQ to XML, debe analizar el nombre, buscar el espacio de nombres atomizado y buscar el nombre atomizado.Each time that you pass a string that contains an expanded name to LINQ to XMLLINQ to XML, it must parse the name, find the atomized namespace, and find the atomized name. Este proceso consume tiempo de la CPU.This process takes CPU time. Si el rendimiento es importante, puede que desee usar un enfoque diferente.If performance is important, you may want to use a different approach.

Con Visual Basic, el enfoque recomendado es usar literales XML, que no implica el uso de nombres expandidos.With Visual Basic, the recommended approach is to use XML literals, which does not involve the use of expanded names.

Propiedades

NamespaceName

Obtiene el identificador de recursos uniforme (URI) de este espacio de nombres.Gets the Uniform Resource Identifier (URI) of this namespace.

None

Obtiene el objeto XNamespace que no se corresponde con ningún espacio de nombres.Gets the XNamespace object that corresponds to no namespace.

Xml

Obtiene el objeto XNamespace que corresponde al URI XML (http://www.w3.org/XML/1998/namespace).Gets the XNamespace object that corresponds to the XML URI (http://www.w3.org/XML/1998/namespace).

Xmlns

Obtiene el objeto XNamespace que corresponde al URI xmlns (http://www.w3.org/2000/xmlns/).Gets the XNamespace object that corresponds to the xmlns URI (http://www.w3.org/2000/xmlns/).

Métodos

Equals(Object)

Determina si el objeto XNamespace especificado es igual al objeto XNamespace actual.Determines whether the specified XNamespace is equal to the current XNamespace.

Get(String)

Obtiene un XNamespace para el identificador uniforme de recursos (URI) especificado.Gets an XNamespace for the specified Uniform Resource Identifier (URI).

GetHashCode()

Obtiene un código hash de este objeto XNamespace.Gets a hash code for this XNamespace.

GetName(String)

Devuelve un objeto XName creado a partir de este XNamespace y el nombre local especificado.Returns an XName object created from this XNamespace and the specified local name.

GetType()

Obtiene el Type de la instancia actual.Gets the Type of the current instance.

(Heredado de Object)
MemberwiseClone()

Crea una copia superficial del Object actual.Creates a shallow copy of the current Object.

(Heredado de Object)
ToString()

Devuelve el URI de este XNamespace.Returns the URI of this XNamespace.

Operadores

Addition(XNamespace, String)

Combina un objeto XNamespace con un nombre local para crear un XName.Combines an XNamespace object with a local name to create an XName.

Equality(XNamespace, XNamespace)

Devuelve un valor que indica si dos instancias de XNamespace son iguales.Returns a value indicating whether two instances of XNamespace are equal.

Implicit(String to XNamespace)

Convierte una cadena que contiene un identificador uniforme de recursos (URI) en un XNamespace.Converts a string containing a Uniform Resource Identifier (URI) to an XNamespace.

Inequality(XNamespace, XNamespace)

Devuelve un valor que indica si dos instancias de XNamespace no son iguales.Returns a value indicating whether two instances of XNamespace are not equal.

Se aplica a

Consulte también: