XName クラス

定義

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

注釈

XML 名には、名前空間とローカル名が含まれます。 完全修飾名 は、名前空間とローカル名を組み合わせたものです。

XName オブジェクトの作成

XName にパブリックコンストラクターが含まれていません。 代わりに、このクラスは、を作成するためのからの暗黙の型変換を提供し String XName ます。 この変換を使用する最も一般的な場所は、要素または属性を構築する場合です。コンストラクターの最初の引数 XElementXName です。 文字列を渡すことにより、暗黙的な変換を利用できます。 次のコードでは、名前空間にない名前の要素が作成されます。

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

Visual Basic では、XML リテラルを使用する方が適しています。

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

この例を実行すると、次の出力が生成されます。

<ElementName>content</ElementName>  

に文字列を割り当てると、 XName からの暗黙的な変換が使用され String ます。

Visual Basic の例では、 XElement XML リテラルを使用してを作成します。 XML リテラルが使用されている場合でも XName 、に対してオブジェクトが作成され XElement ます。

また、 Get オブジェクトに対してメソッドを呼び出すこともでき XName ます。 ただし、string からの暗黙的な変換を使用することをお勧めします。

名前空間での XName の作成

XML の場合と同様に、は名前空間に存在することも、名前空間に含まれないこともあり XName ます。

C# の場合、 XName 名前空間でを作成するには、オブジェクトを宣言して XNamespace から加算演算子のオーバーライドを使用することをお勧めします。

Visual Basic には、XML リテラルとグローバル名前空間宣言を使用して、名前空間に含まれる XML を作成することをお勧めします。

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  

この例を実行すると、次の出力が生成されます。

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

名前空間なしでの XName の作成

Namespaceオブジェクトのプロパティ XName は、null でないことが保証されます。 が名前空間に含まれていない場合、 XName Namespace プロパティはに設定され None ます。 その例を次のコードに示します。

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  

この例を実行すると、次の出力が生成されます。

The element is in no namespace.  

拡張名の使用

XName次の形式で、拡張 XML 名からを作成することもでき {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)  

この例を実行すると、次の出力が生成されます。

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

XName拡張名を使用してを作成することは、オブジェクトを作成 XNamespace し、加算演算子のオーバーライドを使用するよりも効率が悪くなることに注意してください。 また、グローバル名前空間をインポートし、Visual Basic で XML リテラルを使用するよりも効率が悪くなります。

展開された XName 名前を使用してを作成した場合、LINQ to XML は、分割されていない名前空間のインスタンスを検索する必要があります。 この作業は、展開された名前を使用するたびに繰り返す必要があります。 この追加の時間は、LINQ クエリを記述するときにはほとんど発生しません。ただし、大きな XML ツリーを作成する場合は重要な場合があります。

XName オブジェクトを最小化する

XName オブジェクトは、最小化されることが保証されます。つまり、2つのオブジェクトの名前空間がまったく同じで、ローカル名が同じ場合は、 XName 同じインスタンスが共有されます。 等値演算子と比較演算子も、この目的のために明示的に指定されています。

他にも利点があります。この機能を使用すると、クエリをより迅速に実行できます。 要素または属性の名前に基づいてフィルター処理を行う場合、述語で表される比較では、値の比較ではなく、id 比較が使用されます。 2つの文字列を比較するよりも、2つの参照が同じオブジェクトを実際に参照していることを確認する方がはるかに高速です。

プロパティ

LocalName

名前のローカル (非修飾) 部を取得します。

Namespace

完全修飾名の名前空間部分を取得します。

NamespaceName

この XNamespaceXName の URI を返します。

メソッド

Equals(Object)

指定した XName が、この XName と等しいかどうかを判断します。

Get(String)

XName オブジェクトを拡張名から取得します。

Get(String, String)

ローカル名および名前空間から XName オブジェクトを取得します。

GetHashCode()

この XName のハッシュ コードを取得します。

GetType()

現在のインスタンスの Type を取得します。

(継承元 Object)
MemberwiseClone()

現在の Object の簡易コピーを作成します。

(継承元 Object)
ToString()

{namespace}localname という形式の拡張 XML 名を返します。

演算子

Equality(XName, XName)

XName の 2 つのインスタンスが等しいかどうかを示す値を返します。

Implicit(String to XName)

拡張 XML 名として書式設定された文字列 ({namespace}localname) を XName オブジェクトに変換します。

Inequality(XName, XName)

XName の 2 つのインスタンスが等しくないかどうかを示す値を返します。

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

IEquatable<XName>.Equals(XName)

現在の XName が指定した XName と等しいかどうかを示します。

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

SerializationInfo に、ターゲット オブジェクトをシリアル化するために必要なデータを設定します。

適用対象

こちらもご覧ください