XNamespace 類別

定義

表示 XML 命名空間 (Namespace)。 此類別無法獲得繼承。

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 物件保證會進行 Atom 化;也就是說,如果兩 XNamespace 個物件具有相同的 URI,它們將會共用相同的實例。 系統會針對此目的明確提供相等和比較運算子。

使用展開的名稱

另一個指定命名空間和本機名稱的方式是使用格式 {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時,都必須剖析名稱、尋找 Atom 化命名空間,以及尋找 Atom 化名稱。 這個程序會使用 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) 的 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 的兩個執行個體是否相等。

Implicit(String to XNamespace)

將包含統一資源識別元 (URI) 的字串轉換為 XNamespace

Inequality(XNamespace, XNamespace)

傳回值,這個值指出 XNamespace 的兩個執行個體是否不相等。

適用於

另請參閱