XNamespace 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
表示 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 ( |
Xmlns |
取得與 xmlns URI ( |
方法
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 的兩個執行個體是否不相等。 |