XNamespace クラス

定義

XML 名前空間を表します。 このクラスは継承できません。

public ref class XNamespace sealed
public sealed class XNamespace
type XNamespace = class
Public NotInheritable Class XNamespace
継承
XNamespace

注釈

このクラスは、名前空間の XML コンストラクトを表します。

すべてのXName要素に .XNamespace 要素が名前空間内になくても、要素の XName には、名前空間 XNamespace.None が含まれています。 XName.Namespace プロパティが null になることはありません。

XNamespace オブジェクトの作成

オブジェクトを作成する最も一般的な XNamespace 方法は、単に文字列を割り当てることです。 その後、加算演算子のオーバーライドを使用して、名前空間とローカル名を組み合わせることができます。 次の例は、このイディオムを示しています。

XNamespace aw = "http://www.adventure-works.com";  
XElement root = new XElement(aw + "Root", "Content");  
Console.WriteLine(root);  
Dim aw As XNamespace = "http://www.adventure-works.com"  
Dim root As XElement = New XElement(aw + "Root", "Content")  
Console.WriteLine(root)  

ただし、Visual Basicでは、通常、次のようにグローバルな既定の名前空間を宣言します。

Imports <xmlns='http://www.adventure-works.com'>  

Module Module1  
    Sub Main()  
        Dim root As XElement = _  
            <Root>Content</Root>  
        Console.WriteLine(root)  
    End Sub  
End Module  

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

<Root xmlns="http://www.adventure-works.com">Content</Root>  

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

詳細と例については、「C# (LINQ to XML) で名前空間を持つドキュメントを作成する方法」を参照してください。

Visual Basicでの名前空間の使用の詳細については、「XML 名前空間の操作」を参照してください。

名前空間プレフィックスの制御

名前空間を宣言する属性を作成すると、属性で指定されたプレフィックスがシリアル化された XML に保持されます。 プレフィックスを持つ名前空間を宣言する属性を作成するには、属性の名前の名前空間が Xmlns で、属性の名前が名前空間プレフィックスであるような属性を作成します。 属性の値は、名前空間の URI です。 次の例は、このイディオムを示しています。

XNamespace aw = "http://www.adventure-works.com";  
XElement root = new XElement(aw + "Root",  
    new XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"),  
    "Content");  
Console.WriteLine(root);  
Dim aw As XNamespace = "http://www.adventure-works.com"  
Dim root As XElement = New XElement(aw + "Root", _  
    New XAttribute(XNamespace.Xmlns + "aw", "http://www.adventure-works.com"), _  
    "Content")  
Console.WriteLine(root)  

Visual Basicでは、名前空間のプレフィックスを制御する名前空間ノードを作成する代わりに、通常、グローバル名前空間宣言を使用します。

Imports <xmlns:aw='http://www.adventure-works.com'>  

Module Module1  
    Sub Main()  
        Dim root As XElement = _  
            <aw:Root>Content</aw:Root>  
        Console.WriteLine(root)  
    End Sub  
End Module  

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

<aw:Root xmlns:aw="http://www.adventure-works.com">Content</aw:Root>  

詳細については、「 名前空間プレフィックスを制御する方法」を参照してください。

既定の名前空間の作成

名前空間となる属性を構築するときに、属性名の特殊な値が "xmlns" の場合、XML ツリーがシリアル化されるときに、名前空間が既定の名前空間として宣言されます。 "xmlns" 自体の名前を持つ特別な属性は、どの名前空間にも含まれていません。 属性の値は名前空間 URI です。

次の例では、名前空間が既定の名前空間になるように宣言された属性を含む XML ツリーを作成します。

XNamespace aw = "http://www.adventure-works.com";  
XElement root = new XElement(aw + "Root",  
    new XAttribute("xmlns", "http://www.adventure-works.com"),  
    new XElement(aw + "Child", "content")  
);  
Console.WriteLine(root);  
Dim aw As XNamespace = "http://www.adventure-works.com"  
Dim root As XElement = New XElement(aw + "Root", _  
    New XAttribute("xmlns", "http://www.adventure-works.com"), _  
    New XElement(aw + "Child", "content") _  
)  
Console.WriteLine(root)  

Visual Basicでは、名前空間ノードを作成して既定の名前空間を作成する代わりに、通常、グローバルな既定の名前空間宣言を使用します。

Imports <xmlns='http://www.adventure-works.com'>  

Module Module1  
    Sub Main()  
        Dim root As XElement = _  
            <Root>  
                <Child>content</Child>  
            </Root>  
        Console.WriteLine(root)  
    End Sub  
End Module  

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

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

XNamespace Atomization

XNamespace オブジェクトはアトミック化することが保証されます。つまり、2 つの XNamespace オブジェクトの URI がまったく同じ場合、同じインスタンスが共有されます。 等値演算子と比較演算子は、この目的のために明示的に提供されます。

展開名の使用

名前空間とローカル名を指定するもう 1 つの方法は、次の形式で展開名を使用することです {namespace}name

XElement e = new XElement("{http://www.adventure-works.com}Root",  
     new XAttribute("{http://www.adventure-works.com}Att", "content")  
);  
Console.WriteLine(e);  
Dim e As XElement = New XElement("{http://www.adventure-works.com}Root", _  
     New XAttribute("{http://www.adventure-works.com}Att", "content") _  
)  
Console.WriteLine(e)  

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

<Root p1:Att="content" xmlns:p1="http://www.adventure-works.com" xmlns="http://www.adventure-works.com" />  

ただし、この方法はパフォーマンスに影響を与えます。 展開された名前を含む文字列をLINQ to XMLに渡すたびに、名前を解析し、アトミック化された名前空間を見つけて、アトミック化された名前を見つける必要があります。 この処理は CPU 時間を消費します。 パフォーマンスが重要な場合は、別の方法を使用できます。

Visual Basicでは、拡張名の使用を伴わない XML リテラルを使用することをお勧めします。

プロパティ

NamespaceName

この名前空間の URI を取得します。

None

対応する名前空間がない XNamespace オブジェクトを取得します。

Xml

XML URI (http://www.w3.org/XML/1998/namespace) に対応する XNamespace オブジェクトを取得します。

Xmlns

xmlns URI (http://www.w3.org/2000/xmlns/) に対応する XNamespace オブジェクトを取得します。

メソッド

Equals(Object)

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

Get(String)

指定した URI (Uniform Resource Identifier) の XNamespace を取得します。

GetHashCode()

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

GetName(String)

この XName と指定したローカル名から作成された XNamespace オブジェクトを返します。

GetType()

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

(継承元 Object)
MemberwiseClone()

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

(継承元 Object)
ToString()

この XNamespace の URI を返します。

演算子

Addition(XNamespace, String)

XNamespace オブジェクトとローカル名を結合して、XName を作成します。

Equality(XNamespace, XNamespace)

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

Implicit(String to XNamespace)

URI が含まれている文字列を XNamespace に変換します。

Inequality(XNamespace, XNamespace)

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

適用対象

こちらもご覧ください