XName 類別
定義
重要
部分資訊涉及發行前產品,在發行之前可能會有大幅修改。 Microsoft 對此處提供的資訊,不做任何明確或隱含的瑕疵擔保。
代表 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) | |
Get(String) |
從擴充名稱取得 XName 物件。 |
Get(String, String) |
從區域名稱和命名空間取得 XName 物件。 |
GetHashCode() |
取得這個 XName 的雜湊碼。 |
GetType() |
取得目前執行個體的 Type。 (繼承來源 Object) |
MemberwiseClone() |
建立目前 Object 的淺層複製。 (繼承來源 Object) |
ToString() |
以 格式 |
運算子
Equality(XName, XName) |
傳回數值,指出 XName 的兩個執行個體是否相等。 |
Implicit(String to XName) |
將格式化為展開 XML 名稱 (的字串, |
Inequality(XName, XName) |
傳回值,這個值指出 XName 的兩個執行個體是否不相等。 |
明確介面實作
IEquatable<XName>.Equals(XName) | |
ISerializable.GetObjectData(SerializationInfo, StreamingContext) |
將序列化目標物件的所需資料填入 SerializationInfo。 |