XName XName XName XName Class

定義

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
継承
XNameXNameXNameXName
属性
実装

注釈

XML 名には、名前空間とローカル名が含まれます。XML names include a namespace and a local name. 完全修飾名は、名前空間とローカル名を組み合わせたものです。A fully qualified name is the combination of the namespace and local name.

XName オブジェクトの作成Creating 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 リテラルが使用XNameされている場合でも、 XElementに対してオブジェクトが作成されます。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 null でないことが保証されます。 XNameThe Namespace property of an XName object is guaranteed to not be null. が名前空間Namespaceに含まれていない場合、プロパティはにNone設定されます。 XNameIf 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

次の形式{namespace}localnameで、 XName拡張 XML 名からを作成することもできます。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. また、グローバル名前空間をインポートし、Visual Basic で XML リテラルを使用するよりも効率が悪くなります。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オブジェクトは、最小化されることが保証されます。つまり、2つ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. 要素または属性の名前に基づいてフィルター処理を行う場合、述語で表される比較では、値の比較ではなく、id 比較が使用されます。When filtering on the name of elements or attributes, the comparisons expressed in predicates use identity comparison, not value comparison. 2つの文字列を比較するよりも、2つの参照が同じオブジェクトを実際に参照していることを確認する方がはるかに高速です。It is much faster to determine that two references actually refer to the same object than to compare two strings.

プロパティ

LocalName LocalName LocalName LocalName

名前のローカル (非修飾) 部を取得します。Gets the local (unqualified) part of the name.

Namespace Namespace Namespace Namespace

完全修飾名の名前空間部分を取得します。Gets the namespace part of the fully qualified name.

NamespaceName NamespaceName NamespaceName NamespaceName

この XNamespaceXName の URI を返します。Returns the URI of the XNamespace for this XName.

メソッド

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

指定した XName が、この XName と等しいかどうかを判断します。Determines whether the specified XName is equal to this XName.

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

XName オブジェクトを拡張名から取得します。Gets an XName object from an expanded name.

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

ローカル名および名前空間から XName オブジェクトを取得します。Gets an XName object from a local name and a namespace.

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

この XName のハッシュ コードを取得します。Gets a hash code for this XName.

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

現在のインスタンスの Type を取得します。Gets the Type of the current instance.

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

現在の Object の簡易コピーを作成します。Creates a shallow copy of the current Object.

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

{namespace}localname という形式の拡張 XML 名を返します。Returns the expanded XML name in the format {namespace}localname.

演算子

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

XName の 2 つのインスタンスが等しいかどうかを示す値を返します。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)

拡張 XML 名として書式設定された文字列 ({namespace}localname) を 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)

XName の 2 つのインスタンスが等しくないかどうかを示す値を返します。Returns a value indicating whether two instances of XName are not equal.

明示的なインターフェイスの実装

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

現在の XName が、指定した XName と等しいかどうかを示します。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)

SerializationInfo に、対象のオブジェクトをシリアル化するために必要なデータを設定します。Populates a SerializationInfo with the data required to serialize the target object.

適用対象

こちらもご覧ください