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 是 。 藉由傳遞字串,您可以利用隱含轉換。 下列程式碼會建立名稱為無命名空間的專案:

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 範例會 XElement 使用 XML 常值建立 。 即使使用 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.  

使用展開的名稱

您也可以 XName 從展開的 XML 名稱建立 ,格式 {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必須尋找命名空間的 atomized 實例。 每次使用展開的名稱時,都必須重複這項工作。 撰寫 LINQ 查詢時,這個額外的時間可能會忽略;不過,在建立大型 XML 樹狀結構時可能會相當重要。

XName 物件已 Atom 化

XName 物件保證會進行 Atom 化;也就是說,如果兩個 XName 物件具有相同的命名空間和完全相同的本機名稱,它們將會共用相同的實例。 此目的也會明確提供相等和比較運算子。

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

屬性

LocalName

取得名稱的區域 (未限定) 部分。

Namespace

取得完整限定名稱的命名空間部分。

NamespaceName

針對這個 XNamespace 傳回 XName 的 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 的兩個執行個體是否相等。

Implicit(String to XName)

將格式化為展開 XML 名稱 (的字串, {namespace}localname) 轉換為 XName 物件。

Inequality(XName, XName)

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

明確介面實作

IEquatable<XName>.Equals(XName)

指出目前的 XName 是否等於指定的 XName

ISerializable.GetObjectData(SerializationInfo, StreamingContext)

將序列化目標物件的所需資料填入 SerializationInfo

適用於

另請參閱