語言

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 的隱含轉換,可讓您建立 XName。 您通常在建構項目或屬性時使用此轉換: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 範例使用 XML 常值建立 XElement。 即使使用 XML 常值,仍會為 XName 建立 XElement 物件。

此外,您可以對 Get 物件呼叫 XName 方法。 不過,建議的方法是使用字串中的隱含轉換。

在命名空間中建立 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.

使用展開的名稱

您也可以根據展開的 XML 名稱來建立 XName,其格式為 {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 對象保證會原子化;也就是說,如果兩個 XName 物件具有相同的命名空間和完全相同的本機名稱,它們將會共用相同的實例。 也明確提供相等和比較運算符以供此用途使用。

除了其他優點外,這項功能也可讓您更快速地執行查詢。 篩選元素或屬性名稱時,以述詞表示的比較會使用一致性比較,而不是值比較。 判斷兩個參考實際上參考相同的物件比比較兩個字元串要快得多。

屬性

名稱 Description
LocalName

會取得當地(未合格)名稱的部分。

Namespace

取得完整修飾名稱中的命名空間部分。

NamespaceName

回傳 的 XNamespace URI 檔案。XName

方法

名稱 Description
Equals(Object)

判斷指定的 XName 是否等於此 XName。

Get(String, String)

從本地名稱和命名空間取得 XName 物件。

Get(String)

從擴展名稱取得 XName 物件。

GetHashCode()

會得到一個 XName雜湊碼。

GetType()

取得目前實例的 Type。

(繼承來源 Object)
MemberwiseClone()

建立目前 Object的淺層複本。

(繼承來源 Object)
ToString()

回傳格式為 {namespace}localname的擴充 XML 名稱。

運算子

名稱 Description
Equality(XName, XName)

回傳一個值,表示兩個 的 XName 實例是否相等。

Implicit(String to XName)

將格式化為擴充 XML 名稱的字串(即{namespace}localname)轉換為 XName 物件。

Inequality(XName, XName)

回傳一個值,表示兩個 的 XName 實例是否不相等。

明確介面實作

名稱 Description
IEquatable<XName>.Equals(XName)

表示電流 XName 是否等於指定的 XName。

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

將序列化目標物件所需的資料填充 a SerializationInfo 。

適用於

另請參閱