NET(C#):XmlArrayItem特性和XmlElement特性在序列化數組的差別

來源:互聯網
上載者:User

標籤:element   code   格式化輸出   其他   反序   href   item   特性   組成   

https://www.mgenware.com/blog/?p=142

比如這樣一個類,我們用XmlArrayItem特性標明數組內出現的元素類型:

public class a
{
[XmlArrayItem(Type = typeof(int)), XmlArrayItem(Type = typeof(Guid)), XmlArrayItem(Type = typeof(string))]
public object[] arr = new object[] { 12, "hehe", Guid.NewGuid() };
}

 

序列化的XML是:

<a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<arr>
<int>12</int>
<string>hehe</string>
<guid>291b7cba-fc32-4019-bb22-d5d61643b6a7</guid>
</arr>
</a>

欄位arr的名稱是以XML元素寫入的。

 

但如果把XmlArrayItem都改成XmlElement特性:

public class a
{
[XmlElement(Type = typeof(int)), XmlElement(Type = typeof(Guid)), XmlElement(Type = typeof(string))]
public object[] arr = new object[] { 12, "hehe", Guid.NewGuid() };
}

 

序列化的XML是這樣:

<a xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<int>12</int>
<string>hehe</string>
<guid>5e7da5a0-d513-47b7-ae8f-80b404a9b0d4</guid>
</a>

 

並沒有arr欄位的名稱!

注意你可以用XmlArrayItem或者XmlElement特性的ElementName來控制對應類型的XML元素名稱。

其他關於XML序列化的文章,可以參考:
.NET(C#):在數群組成員上加入XmlElement特性
.NET(C#):XML序列化時衍生類別的處理

有任何疑問,可以到Coldfunction來提問.

Related Posts:
    1. .NET(C#):在數群組成員上加入XmlElement特性
    2. .NET(C#):XML序列化時衍生類別的處理
    3. .NET(C#):覺察XML還原序列化中的未知節點
    4. .NET(C#): 格式化輸出IDictionary<string, object>字典對象

NET(C#):XmlArrayItem特性和XmlElement特性在序列化數組的差別

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.