XName Classe
Definição
Importante
Algumas informações se referem a produtos de pré-lançamento que podem ser substancialmente modificados antes do lançamento. A Microsoft não oferece garantias, expressas ou implícitas, das informações aqui fornecidas.
Representa um nome de um elemento ou atributo XML.
public ref class XName sealed : IEquatable<System::Xml::Linq::XName ^>
public ref class XName sealed : IEquatable<System::Xml::Linq::XName ^>, System::Runtime::Serialization::ISerializable
public sealed class XName : IEquatable<System.Xml.Linq.XName>
public sealed class XName : IEquatable<System.Xml.Linq.XName>, System.Runtime.Serialization.ISerializable
[System.Serializable]
public sealed class XName : IEquatable<System.Xml.Linq.XName>, System.Runtime.Serialization.ISerializable
[System.Serializable]
[System.Runtime.Serialization.KnownType(typeof(System.Xml.Linq.NameSerializer))]
public sealed class XName : IEquatable<System.Xml.Linq.XName>, System.Runtime.Serialization.ISerializable
type XName = class
interface IEquatable<XName>
type XName = class
interface IEquatable<XName>
interface ISerializable
[<System.Serializable>]
type XName = class
interface IEquatable<XName>
interface ISerializable
[<System.Serializable>]
[<System.Runtime.Serialization.KnownType(typeof(System.Xml.Linq.NameSerializer))>]
type XName = class
interface IEquatable<XName>
interface ISerializable
Public NotInheritable Class XName
Implements IEquatable(Of XName)
Public NotInheritable Class XName
Implements IEquatable(Of XName), ISerializable
- Herança
-
XName
- Atributos
- Implementações
Comentários
Os nomes XML incluem um namespace e um nome local. Um nome totalmente qualificado é a combinação do namespace e do nome local.
Criar um objeto XName
XName não contém nenhum construtor público. Em vez disso, essa classe fornece uma conversão implícita de String que permite que você crie uma XName. O lugar mais comum que você usa essa conversão é ao construir um elemento ou atributo: o primeiro argumento para o XElement construtor é um XName. Ao passar uma cadeia de caracteres, você aproveita a conversão implícita. O código a seguir cria um elemento com um nome que não está no namespace:
XElement root = new XElement("ElementName", "content");
Console.WriteLine(root);
No Visual Basic, é mais apropriado utilizar literais XML:
Dim root As XElement = <ElementName>content</ElementName>
Console.WriteLine(root)
Este exemplo produz a seguinte saída:
<ElementName>content</ElementName>
Atribuir uma cadeia de caracteres a um XName usa a conversão implícita de String.
O exemplo do Visual Basic cria o XElement usando literais XML. Mesmo que literais XML sejam usados, um XName objeto é criado para o XElement.
Além disso, você pode chamar o Get método para um XName objeto. No entanto, a maneira recomendada é utilizar a conversão implícita de cadeia de caracteres.
Criar um XName em um namespace
Assim como no XML, um XName pode estar em um namespace ou pode estar em nenhum namespace.
Para C#, a abordagem recomendada para criar um XName em um namespace é declarar o objeto XNamespace e então usar a sobrecarga do operador de adição.
Para o Visual Basic, a abordagem recomendada é usar literais XML e declarações de namespace globais para criar XML que esteja em um 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 produz a seguinte saída:
<ElementName xmlns="http://www.adventure-works.com">content</ElementName>
Criar um XName sem namespace
A Namespace propriedade de um XName objeto tem a garantia de não ser nula. Se a XName propriedade não estiver em nenhum namespace, a Namespace propriedade será definida como None. O código a seguir demonstra isso:
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 produz a seguinte saída:
The element is in no namespace.
Usar nomes expandidos
Você também pode criar um XName a partir de um nome XML expandido na forma {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 produz a seguinte saída:
<ElementName xmlns="http://www.adventure-works.com">content</ElementName>
Lembre-se de que criar um XName através de um nome expandido é menos eficiente do que criar um objeto XNamespace e usar a sobrecarga do operador de adição. Também é menos eficiente do que importar um namespace global e usar literais XML no Visual Basic.
Se você criar um XName usando um nome expandido, LINQ to XML precisa encontrar a instância atomizada de um namespace. Esse trabalho deve ser repetido para cada uso de um nome expandido. É provável que esse tempo adicional seja insignificante ao escrever consultas LINQ; no entanto, pode ser significativo ao criar uma árvore XML grande.
Objetos XName são atomizados
XName os objetos têm a garantia de serem atomizados; ou seja, se dois XName objetos tiverem exatamente o mesmo namespace e exatamente o mesmo nome local, eles compartilharão a mesma instância. Os operadores de igualdade e comparação também são fornecidos explicitamente para essa finalidade.
Entre outros benefícios, esse recurso permite a execução mais rápida de consultas. Ao filtrar o nome de elementos ou atributos, as comparações expressas em predicados usam comparação de identidade, não comparação de valor. É muito mais rápido determinar que duas referências realmente se referem ao mesmo objeto do que comparar duas cadeias de caracteres.
Propriedades
| Nome | Description |
|---|---|
| LocalName |
Obtém a parte local (não qualificada) do nome. |
| Namespace |
Obtém a parte do namespace do nome totalmente qualificado. |
| NamespaceName |
Retorna o URI do XNamespace para isso XName. |
Métodos
| Nome | Description |
|---|---|
| Equals(Object) | |
| Get(String, String) |
Obtém um XName objeto de um nome local e um namespace. |
| Get(String) |
Obtém um XName objeto de um nome expandido. |
| GetHashCode() |
Obtém um código hash para isso XName. |
| 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 nome XML expandido no formato |
Operadores
| Nome | Description |
|---|---|
| Equality(XName, XName) |
Retorna um valor que indica se duas instâncias são XName iguais. |
| Implicit(String to XName) |
Converte uma cadeia de caracteres formatada como um nome XML expandido (ou seja, |
| Inequality(XName, XName) |
Retorna um valor que indica se duas instâncias não são iguais XName . |
Implantações explícitas de interface
| Nome | Description |
|---|---|
| IEquatable<XName>.Equals(XName) | |
| ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
Popula um SerializationInfo com os dados necessários para serializar o objeto de destino. |