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 にはパブリック コンストラクターが含まれていません。 代わりに、このクラスは暗黙的な変換StringXNameを提供します。これにより、. この変換を使用する最も一般的な場所は、要素または属性を構築する場合です。コンストラクターの最初のXElement引数は .XName 文字列を渡すことで、暗黙的な変換を利用できます。 次のコードでは、名前空間に含まれる名前を持つ要素を作成します。

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例では、using XML リテラルをXElement作成します。 XML リテラルが使用されている場合でも、XNameXElement.

さらに、オブジェクトのメソッドXNameGet呼び出すことができます。 ただし、推奨される方法は、文字列からの暗黙的な変換を使用する方法です。

名前空間での 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 の作成

オブジェクトのXNameプロパティは Namespace 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.  

展開名の使用

展開された XML 名を次の形式{namespace}localnameで作成XNameすることもできます。

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 に、ターゲット オブジェクトをシリアル化するために必要なデータを設定します。

適用対象

こちらもご覧ください