XName Класс

Определение

Представляет имя XML-элемента или атрибута.Represents a name of an XML element or attribute.

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.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>
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
Наследование
XName
Атрибуты
Реализации

Комментарии

Имена XML включают пространство имен и локальное имя.XML names include a namespace and a local name. Полное имя — это сочетание пространства имен и локального имени.A fully qualified name is the combination of the namespace and local name.

Создание объекта XNameCreating an XName Object

XName не содержит открытых конструкторов.XName does not contain any public constructors. Вместо этого этот класс обеспечивает неявное преобразование из String, позволяющее создать XName.Instead, this class provides an implicit conversion from String that allows you to create an XName. Чаще всего это преобразование используется при создании элемента или атрибута: первым аргументом конструктора XElement является 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. Передавая строку, можно воспользоваться неявным преобразованием.By passing a string, you take advantage of the implicit conversion. Следующий код создает элемент с именем, которое не находится в пространстве имен:The following code creates an element with a name that is in no namespace:

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

В Visual Basic более уместно использовать литералы XML:In Visual Basic, it is more appropriate to use XML literals:

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

В примере получается следующий вывод.This example produces the following output:

<ElementName>content</ElementName>  

Присвоение строки XName использует неявное преобразование из String.Assigning a string to an XName uses the implicit conversion from String.

В Visual Basic примере создается XElement с помощью XML-литералов.The Visual Basic example creates the XElement using XML literals. Несмотря на то, что используются литералы XML, для XElementсоздается объект XName.Even though XML literals are used, an XName object is created for the XElement.

Кроме того, можно вызвать метод Get для объекта XName.In addition, you can call the Get method for an XName object. Однако рекомендуется использовать неявное преобразование из String.However, the recommended way is to use the implicit conversion from string.

Создание XName в пространстве именCreating an XName in a Namespace

Как и в случае с XML, XName может находиться в пространстве имен или отсутствовать в пространстве имен.As with XML, an XName can be in a namespace, or it can be in no namespace.

Для C#рекомендуемый подход к созданию XName в пространстве имен — объявить объект XNamespace, а затем использовать переопределение оператора сложения.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.

Для Visual Basic рекомендуется использовать литералы XML и глобальные объявления пространств имен для создания XML-кода в пространстве имен.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  

В примере получается следующий вывод.This example produces the following output:

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

Создание XName в отсутствии пространства именCreating an XName in no Namespace

Свойство Namespace объекта XName гарантированно не равно null.The Namespace property of an XName object is guaranteed to not be null. Если XName не находится в пространстве имен, то свойству Namespace будет присвоено значение None.If the XName is in no namespace, then the Namespace property will be set to None. Следующий код демонстрирует это: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  

В примере получается следующий вывод.This example produces the following output:

The element is in no namespace.  

Использование расширенных именUsing Expanded Names

Можно также создать XName из развернутого XML-имени в форме {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)  

В примере получается следующий вывод.This example produces the following output:

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

Имейте в виду, что создание XName с помощью развернутого имени менее эффективно, чем создание объекта XNamespace и использование переопределения оператора сложения.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. Он также менее эффективен, чем импорт глобального пространства имен и использование литералов XML в Visual Basic.It is also less efficient than importing a global namespace and using XML literals in Visual Basic.

При создании XName с использованием развернутого имени LINQ to XML должен найти атомарный экземпляр пространства имен.If you create an XName using an expanded name, LINQ to XML must find the atomized instance of a namespace. Эта работа должна повторяться при каждом использовании развернутого имени.This work must be repeated for every use of an expanded name. Это дополнительное время, скорее всего, будет незначительным при написании запросов LINQ. Однако это может быть существенным при создании большого XML-дерева.This additional time is likely to be negligible when writing LINQ queries; however, it might be significant when creating a large XML tree.

Объекты XName разбитыXName Objects are Atomized

XName объекты гарантированно будут разъединены; то есть, если два XName объектов имеют одно и то же пространство имен и одно и то же локальное имя, они будут совместно использовать один и тот же экземпляр.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. Операторы равенства и сравнения также предоставляются явно для этой цели.The equality and comparison operators are also provided explicitly for this purpose.

Помимо других преимуществ, эта функция обеспечивает более быстрое выполнение запросов.Among other benefits, this feature allows for faster execution of queries. При фильтрации по именам элементов или атрибутов, сравнения, выраженные в предикатах, используют сравнение идентификаторов, а не сравнение значений.When filtering on the name of elements or attributes, the comparisons expressed in predicates use identity comparison, not value comparison. Гораздо быстрее определить, что две ссылки на самом деле ссылаются на один и тот же объект, чем на сравнение двух строк.It is much faster to determine that two references actually refer to the same object than to compare two strings.

Свойства

LocalName

Вызывает локальную (неопределенную) часть имени.Gets the local (unqualified) part of the name.

Namespace

Вызывает часть пространства имен полностью определенного имени.Gets the namespace part of the fully qualified name.

NamespaceName

Возвращает URI XNamespace для этого XName.Returns the URI of the XNamespace for this XName.

Методы

Equals(Object)

Определяет, является ли указанное XName равным данному XName.Determines whether the specified XName is equal to this XName.

Get(String)

Вызывает объект XName из развернутого имени.Gets an XName object from an expanded name.

Get(String, String)

Вызывает объект XName из локального имени и пространства имен.Gets an XName object from a local name and a namespace.

GetHashCode()

Возвращает хэш-код для данного объекта XName.Gets a hash code for this XName.

GetType()

Возвращает объект Type для текущего экземпляра.Gets the Type of the current instance.

(Унаследовано от Object)
MemberwiseClone()

Создает неполную копию текущего объекта Object.Creates a shallow copy of the current Object.

(Унаследовано от Object)
ToString()

Возвращает развернутое имя XML в формате {пространство_имен}локальное_имя.Returns the expanded XML name in the format {namespace}localname.

Операторы

Equality(XName, XName)

Возвращает значение, указывающее, равны ли два экземпляра XName.Returns a value indicating whether two instances of XName are equal.

Implicit(String to XName)

Преобразует строку, отформатированную как развернутое имя XML (то есть {пространство_имен}локальное_имя), в объект XName.Converts a string formatted as an expanded XML name (that is,{namespace}localname) to an XName object.

Inequality(XName, XName)

Возвращает значение, указывающее, являются ли два экземпляра XName неравными.Returns a value indicating whether two instances of XName are not equal.

Явные реализации интерфейса

IEquatable<XName>.Equals(XName)

Указывает, равен ли текущий объект XName заданному объекту XName.Indicates whether the current XName is equal to the specified XName.

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

Заполняет объект SerializationInfo данными, необходимыми для сериализации целевого объекта.Populates a SerializationInfo with the data required to serialize the target object.

Применяется к

Дополнительно