XmlNamespaceDeclarationsAttribute 類別

定義

指定目標屬性、參數、傳回值或類別成員包含在 XML 文件中使用之命名空間關聯的前置詞。

public ref class XmlNamespaceDeclarationsAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)]
public class XmlNamespaceDeclarationsAttribute : Attribute
[System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)]
public class XmlNamespaceDeclarationsAttribute : Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue, AllowMultiple=false)>]
type XmlNamespaceDeclarationsAttribute = class
    inherit Attribute
[<System.AttributeUsage(System.AttributeTargets.Field | System.AttributeTargets.Parameter | System.AttributeTargets.Property | System.AttributeTargets.ReturnValue)>]
type XmlNamespaceDeclarationsAttribute = class
    inherit Attribute
Public Class XmlNamespaceDeclarationsAttribute
Inherits Attribute
繼承
XmlNamespaceDeclarationsAttribute
屬性

備註

屬性 XmlNamespaceDeclarationsAttribute 只能在類別中套用一次,以套用至傳回 XmlSerializerNamespaces 物件的欄位或屬性。

XmlNamespaceDeclarationsAttribute可讓您儲存 XML 檔中使用的前置詞和相關聯的命名空間。 例如,屬性的其中一個常見用法是儲存 XPath 資料,因為它是由名為 XML Language (XPath) Version 1.0的 World Wide Web Consortium 檔所定義。 簡單地說,XPath 是包含許多命名空間前置詞和本機名稱的字串,以及其他一些語法。

XPath 語言允許與路徑的前置詞關聯,以及使用 XML 檔中的前置詞。 例如,下列名為 「select」 的 XML 檔包含與特定 (URI 相關聯的前置詞 (「cal」) ) http://www.cohowinery.com/calendar/ 。 元素包含名為 「path」 的屬性,其中包含 XPath。

<select xmlns:cal ="http://www.cohowinery.com/calendar/" path="cal:appointments/@startTime" />  

此的架構可能是:

<element name="select">  
   <complexType>  
      <simpleContent>  
         <attribute name="path" />  
      </simpleContent>  
   </complexType>  
</element>  

XmlNamespaceDeclarationsAttribute如果沒有 ,前置詞與命名空間之間的關聯就會遺失。

若要保留前置詞與命名空間 URI 之間的關聯,請新增傳回 XmlSerializerNamespaces 物件並將 屬性套用 XmlNamespaceDeclarationsAttribute 至成員的成員,如下列 C# 和 Visual Basic 程式碼所示:

// C#  
public class Select {  
  [XmlAttribute] public string path;  
  [XmlNamespaceDeclarations] public XmlSerializerNamespaces xmlns;  
}  
' Visual Basic  
Public Class Select  
   <XmlAttribute> Public path As String  
   <XmlNamespaceDeclarations> Public xmlns As XmlSerializerNamespaces  
End Class  

序列化時,產生的 XML 檔的架構會包含 XML 架構定義, (名為 appinfo 的 XSD) 專案。 元素進一步包含名為 keepNamespaceDeclarations 的中繼資料專案,設定為包含命名空間宣告的成員名稱。 下列 XML 片段顯示架構:

<xs:element name="select">  
   <xs:complexType>  
      <xs:annotation>   
         <xs:appinfo>  
          <keepNamespaceDeclarations>xmlns</keepNamespaceDeclarations>  
         </xs:appinfo>   
      </xs:annotation>   
      <xs:simpleContent>  
         <xs:attribute name="path" />  
      </xs:simpleContent>  
   </xs:complexType>  
</xs:element>  

在還原序列化時 xmlns ,欄位會 XmlSerializerNamespaces 包含包含所有命名空間前置詞定義的 物件。

在序列化時,使用者可以使用 方法,將前置詞命名空間配對新增至 XmlSerializerNamespaces 物件 Add 。 這會顯示在下列 C# 和 Visual Basic 程式碼中:

// C#  
using System;  
using System.IO;  
using System.Xml.Serialization;  
[XmlRoot("select")]  
public class Select {  
   [XmlAttribute]  
   public string xpath;  
   [XmlNamespaceDeclarations]  
   public XmlSerializerNamespaces xmlns;  
}  
public class Test {  
   public static void Main(string[] args) {  
      Select mySelect = new Select();  
      mySelect.xpath = "myNS:ref/@common:y";  
      mySelect.xmlns = new XmlSerializerNamespaces();  
      mySelect.xmlns.Add("MyNS", "myNS.tempuri.org");  
      mySelect.xmlns.Add("common", "common.tempuri.org");  
      XmlSerializer ser = new XmlSerializer(typeof(Select));  
      ser.Serialize(Console.Out, mySelect);  
   }  
}  
// Output:  
// <?xml version="1.0" encoding="IBM437"?>  
// <select xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
// xmlns:common="common.tempuri.org" xmlns:MyNS="myNS.tempuri.org" xpath="myNS:ref/@common:y" />  
' Visual Basic  
Imports System  
Imports System.IO  
Imports System.Xml.Serialization  
<XmlRoot("select")> _  
Public Class SelectPath  
   <XmlAttribute> _  
   Public xpath As String   
   <XmlNamespaceDeclarations> _  
   public xmlns As XmlSerializerNamespaces   
End Class  
Public Class Test   
   Public Shared Sub Main()   
      Dim mySelect As SelectPath = New SelectPath()  
      mySelect.xpath = "myNS:ref/@common:y"  
      mySelect.xmlns = New XmlSerializerNamespaces()  
      mySelect.xmlns.Add("MyNS", "myNS.tempuri.org")  
      mySelect.xmlns.Add("common", "common.tempuri.org")  
      Dim ser As XmlSerializer = New XmlSerializer(mySelect.GetType)  
      ser.Serialize(Console.Out, mySelect)  
   End Sub  
End Class  
'Output:  
' <?xml version="1.0" encoding="IBM437"?>  
' <select xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
' xmlns:common="common.tempuri.org" xmlns:MyNS="myNS.tempuri.org" xpath="myNS:ref/@common:y" />  

另請注意,套用屬性的成員只包含屬於 類別所定義之 XML 元素的前置詞命名空間組。 例如,在下列 XML 檔中,只會擷取前置片語 「cal」,但不會擷取 「x」 前置詞。 若要取得該資料,請將具有 XmlNamespaceDeclarationsAttribute 的成員加入至代表 元素的 root 類別。

<?xml version="1.0"?>  
<x:root xmlns:x="http://www.cohowinery.com/x/">  
  <x:select xmlns:cal="http://www.cohowinery.com/calendar/" path="cal:appointments/@cal:startTime" />  
</x:root>  

建構函式

XmlNamespaceDeclarationsAttribute()

初始化 XmlNamespaceDeclarationsAttribute 類別的新執行個體。

屬性

TypeId

在衍生類別中實作時,取得這個 Attribute 的唯一識別碼。

(繼承來源 Attribute)

方法

Equals(Object)

傳回值,這個值指出此執行個體是否與指定的物件相等。

(繼承來源 Attribute)
GetHashCode()

傳回這個執行個體的雜湊碼。

(繼承來源 Attribute)
GetType()

取得目前執行個體的 Type

(繼承來源 Object)
IsDefaultAttribute()

在衍生類別中覆寫時,表示這個執行個體的值是衍生類別的預設值。

(繼承來源 Attribute)
Match(Object)

在衍生類別中覆寫時,會傳回值,表示這個執行個體是否等於指定物件。

(繼承來源 Attribute)
MemberwiseClone()

建立目前 Object 的淺層複製。

(繼承來源 Object)
ToString()

傳回代表目前物件的字串。

(繼承來源 Object)

明確介面實作

_Attribute.GetIDsOfNames(Guid, IntPtr, UInt32, UInt32, IntPtr)

將一組名稱對應至一組對應的分派識別項 (Dispatch Identifier)。

(繼承來源 Attribute)
_Attribute.GetTypeInfo(UInt32, UInt32, IntPtr)

擷取物件的類型資訊,可以用來取得介面的類型資訊。

(繼承來源 Attribute)
_Attribute.GetTypeInfoCount(UInt32)

擷取物件提供的類型資訊介面數目 (0 或 1)。

(繼承來源 Attribute)
_Attribute.Invoke(UInt32, Guid, UInt32, Int16, IntPtr, IntPtr, IntPtr, IntPtr)

提供物件所公開的屬性和方法的存取權。

(繼承來源 Attribute)

適用於