XName XName XName XName Class

Definição

Representa um nome de um elemento ou atributo XML.Represents a name of an XML element or attribute.

public ref class XName sealed : IEquatable<System::Xml::Linq::XName ^>, System::Runtime::Serialization::ISerializable
[System.Runtime.Serialization.KnownType(typeof(System.Xml.Linq.NameSerializer))]
[System.Serializable]
public sealed class XName : IEquatable<System.Xml.Linq.XName>, System.Runtime.Serialization.ISerializable
type XName = class
    interface IEquatable<XName>
    interface ISerializable
Public NotInheritable Class XName
Implements IEquatable(Of XName), ISerializable
Herança
XNameXNameXNameXName
Atributos
Implementações

Comentários

Nomes XML incluem um namespace e um nome local.XML names include a namespace and a local name. Um nome totalmente qualificado é a combinação do namespace e o nome local.A fully qualified name is the combination of the namespace and local name.

Criando um objeto XNameCreating an XName Object

XName não contém nenhum construtor público.XName does not contain any public constructors. Em vez disso, essa classe fornece uma conversão implícita da String que permite que você crie um XName.Instead, this class provides an implicit conversion from String that allows you to create an XName. O local mais comum é usar essa conversão é ao construir um elemento ou atributo: O primeiro argumento para o XElement construtor é um XName.The most common place you use this conversion is when constructing an element or attribute: The first argument to the XElement constructor is an XName. Ao passar uma cadeia de caracteres, você tirar proveito da conversão implícita.By passing a string, you take advantage of the implicit conversion. O código a seguir cria um elemento com um nome que está em nenhum namespace:The following code creates an element with a name that is in no namespace:

XElement root = new XElement("ElementName", "content");  
Console.WriteLine(root);  

No Visual Basic, é mais apropriado usar literais XML:In Visual Basic, it is more appropriate to use XML literals:

Dim root As XElement = <ElementName>content</ElementName>  
Console.WriteLine(root)  

Este exemplo gera a seguinte saída:This example produces the following output:

<ElementName>content</ElementName>  

Atribuir uma cadeia de caracteres para um XName usa a conversão implícita de String.Assigning a string to an XName uses the implicit conversion from String.

O exemplo de Visual Basic cria o XElement usando literais XML.The Visual Basic example creates the XElement using XML literals. Embora os literais XML são usados, uma XName objeto é criado para o XElement.Even though XML literals are used, an XName object is created for the XElement.

Além disso, você pode chamar o Get método para um XName objeto.In addition, you can call the Get method for an XName object. No entanto, a maneira recomendada é usar a conversão implícita de cadeia de caracteres.However, the recommended way is to use the implicit conversion from string.

Criando um XName em um NamespaceCreating an XName in a Namespace

Assim como acontece com XML, um XName pode estar em um namespace, ou ele pode ficar sem namespace.As with XML, an XName can be in a namespace, or it can be in no namespace.

Para C#, a abordagem recomendada para a criação de um XName em um namespace é declarar o XNamespace do objeto e, em seguida, use a substituição do operador de adição.For C#, the recommended approach for creating an XName in a namespace is to declare the XNamespace object, then use the override of the addition operator.

Para o Visual Basic, a abordagem recomendada é usar literais XML e declarações de namespace global para criar o XML que está em um namespace.For Visual Basic, the recommended approach is to use XML literals and global namespace declarations to create XML that is in a namespace.

XNamespace aw = "http://www.adventure-works.com";  
XElement root = new XElement(aw + "ElementName", "content");  
Console.WriteLine(root);  
Imports <xmlns="http://www.adventure-works.com">  

Module Module1  
    Sub Main()  
        Dim root As XElement = <ElementName>content</ElementName>  
        Console.WriteLine(root)  
    End Sub  
End Module  

Este exemplo gera a seguinte saída:This example produces the following output:

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

Criando um XName em nenhum NamespaceCreating an XName in no Namespace

O Namespace propriedade de um XName é garantido que o objeto não pode ser nulo.The Namespace property of an XName object is guaranteed to not be null. Se o XName está em nenhum namespace, em seguida, a Namespace propriedade será definida como None.If the XName is in no namespace, then the Namespace property will be set to None. O código a seguir demonstra isso:The following code demonstrates this:

XElement root = new XElement("ElementName", "content");  
if (root.Name.Namespace == XNamespace.None)  
    Console.WriteLine("The element is in no namespace.");  
else  
    Console.WriteLine("The element is in a namespace.");  
Dim root As XElement = <ElementName>content</ElementName>  
If (root.Name.Namespace Is XNamespace.None) Then  
    Console.WriteLine("The element is in no namespace.")  
Else  
    Console.WriteLine("The element is in a namespace.")  
End If  

Este exemplo gera a seguinte saída:This example produces the following output:

The element is in no namespace.  

Usando nomes expandidosUsing Expanded Names

Você também pode criar uma XName de um nome XML expandido no formato {namespace}localname:You can also create an XName from a expanded XML name in the form {namespace}localname:

XElement root = new XElement("{http://www.adventure-works.com}ElementName", "content");  
Console.WriteLine(root);  
Dim root As XElement = New XElement("{http://www.adventure-works.com}ElementName", "content")  
Console.WriteLine(root)  

Este exemplo gera a seguinte saída:This example produces the following output:

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

Lembre-se que criar uma XName por meio de um nome expandido é menos eficiente do que criar um XNamespace objeto e usando a substituição do operador de adição.Be aware that creating an XName through an expanded name is less efficient than creating an XNamespace object and using the override of the addition operator. Também é menos eficiente do que importar um namespace global e usando literais XML no Visual Basic.It is also less efficient than importing a global namespace and using XML literals in Visual Basic.

Se você criar um XName usando um nome expandido, LINQ to XML deve localizar a instância atomizada de um namespace.If you create an XName using an expanded name, LINQ to XML must find the atomized instance of a namespace. Esse trabalho deve ser repetido para cada uso de um nome expandido.This work must be repeated for every use of an expanded name. Esse tempo adicional é provavelmente será insignificante, ao escrever consultas LINQ; No entanto, ele pode ser significativo durante a criação de uma grande árvore XML.This additional time is likely to be negligible when writing LINQ queries; however, it might be significant when creating a large XML tree.

Objetos XName são AtomizadosXName Objects are Atomized

XName objetos têm garantia de ser atomizada; ou seja, se dois XName objetos têm exatamente o mesmo namespace e exatamente o mesmo nome local, eles compartilharão a mesma instância.XName objects are guaranteed to be atomized; that is, if two XName objects have exactly the same namespace and exactly the same local name, they will share the same instance. Os operadores de comparação e igualdade também são fornecidos explicitamente para essa finalidade.The equality and comparison operators are also provided explicitly for this purpose.

Entre outros benefícios, esse recurso permite a execução mais rápida de consultas.Among other benefits, this feature allows for faster execution of queries. Ao filtrar no nome de elementos ou atributos, as comparações expressadas em predicados de utilizam a comparação de identidade, não a comparação de valor.When filtering on the name of elements or attributes, the comparisons expressed in predicates use identity comparison, not value comparison. É muito mais rápido para determinar se duas referências indicam, na verdade, ao mesmo objeto que ao comparar duas cadeias de caracteres.It is much faster to determine that two references actually refer to the same object than to compare two strings.

Propriedades

LocalName LocalName LocalName LocalName

Obtém a parte local (não qualificada) do nome.Gets the local (unqualified) part of the name.

Namespace Namespace Namespace Namespace

Obtém a parte do namespace do nome totalmente qualificado.Gets the namespace part of the fully qualified name.

NamespaceName NamespaceName NamespaceName NamespaceName

Retorna o URI do XNamespace para este XName.Returns the URI of the XNamespace for this XName.

Métodos

Equals(Object) Equals(Object) Equals(Object) Equals(Object)

Determina se o XName especificado é igual a este XName.Determines whether the specified XName is equal to this XName.

Get(String) Get(String) Get(String) Get(String)

Obtém um objeto XName de um nome expandido.Gets an XName object from an expanded name.

Get(String, String) Get(String, String) Get(String, String) Get(String, String)

Obtém um objeto XName de um namespace e um nome local.Gets an XName object from a local name and a namespace.

GetHashCode() GetHashCode() GetHashCode() GetHashCode()

Obtém o código hash para esse XName.Gets a hash code for this XName.

GetType() GetType() GetType() GetType()

Obtém o Type da instância atual.Gets the Type of the current instance.

(Inherited from Object)
MemberwiseClone() MemberwiseClone() MemberwiseClone() MemberwiseClone()

Cria uma cópia superficial do Object atual.Creates a shallow copy of the current Object.

(Inherited from Object)
ToString() ToString() ToString() ToString()

Retorna o nome expandido XML no formato {namespace}localname.Returns the expanded XML name in the format {namespace}localname.

Operadores

Equality(XName, XName) Equality(XName, XName) Equality(XName, XName) Equality(XName, XName)

Retorna um valor que indica se duas instâncias de XName são iguais.Returns a value indicating whether two instances of XName are equal.

Implicit(String to XName) Implicit(String to XName) Implicit(String to XName) Implicit(String to XName)

Converte uma cadeia de caracteres formatada como um nome XML expandido (isto é,{namespace}localname) em um objeto XName.Converts a string formatted as an expanded XML name (that is,{namespace}localname) to an XName object.

Inequality(XName, XName) Inequality(XName, XName) Inequality(XName, XName) Inequality(XName, XName)

Retorna um valor que indica se duas instâncias de XName não são iguais.Returns a value indicating whether two instances of XName are not equal.

Implantações explícitas de interface

IEquatable<XName>.Equals(XName) IEquatable<XName>.Equals(XName) IEquatable<XName>.Equals(XName) IEquatable<XName>.Equals(XName)

Indica se o XName atual é igual ao XName especificado.Indicates whether the current XName is equal to the specified XName.

ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext) ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Popula um SerializationInfo com os dados necessários para serializar o objeto de destino.Populates a SerializationInfo with the data required to serialize the target object.

Aplica-se a

Veja também