C#解析XML——使用屬性控制XML序列化
使用屬性可以控制物件的 XML 序列化。
預設情況下,XML 元素名稱由類或成員名稱確定。在名為 Book
的簡單類中,欄位 ISBN
將生成 XML 元素標記 <ISBN>,如下面的示例所示。
- publicclass Book
- {
- publicstring ISBN;
- }
- // When an instance of the Book class is serialized, it might
- // produce this XML:
- // <ISBN>1234567890</ISBN>.
若要重新命名元素,可以更改這種預設行為。下面的程式碼演示屬性 (Attribute) 如何通過設定 XmlElementAttribute 的 ElementName 屬性 (Property) 實現此目的。
- publicclass TaxRates{
- [XmlElement(ElementName = "TaxRate")]
- publicdecimal ReturnTaxRate;
- }
XmlArrayAttribute 和 XmlArrayItemAttribute 屬性旨在用於控制陣列的序列化。使用這些屬性可以控制元素名稱、名稱空間以及 XML 架構 (XSD) 資料型別(在全球資訊網聯合會 [www.w3.org] 文件“XML 架構第 2 部分:資料型別”中進行了定義)。此外,還可以指定陣列所能包含的型別。
對於序列化陣列時生成的封閉 XML 元素,其屬性將由 XmlArrayAttribute
Employees
的 XML 元素。Employees
元素將包含在陣列型別Employee
之後命名的一系列元素。
- publicclass Group{
- public Employee[] Employees;
- }
- publicclass Employee{
- publicstring Name;
- }
序列化例項可能如下所示。
- <Group>
- <Employees>
- <Employee>
-
<
- </Employee>
- </Employees>
- </Group>
通過應用 XmlArrayAttribute,可以按照以下方式更改 XML 元素的名稱。
- publicclass Group{
- [XmlArray("TeamMembers")]
- public Employee[] Employees;
- }
生成的 XML 可能如下所示。
- <Group>
- <TeamMembers>
- <Employee>
- <Name>Haley</Name>
- </Employee>
- </TeamMembers>
另一方面,XmlArrayItemAttribute 可以控制如何序列化陣列中包含的項。請注意,該屬性將應用於返回陣列的欄位。
- publicclass Group{
- [XmlArrayItem("MemberName")]
- public Employee[] Employees;
- }
生成的 XML 可能如下所示。
- <Group>
- <Employees>
- <MemberName>Haley</MemberName>
- </Employees>
- </Group>
序列化派生類
XmlArrayItemAttribute 的另一種用法是,允許序列化派生類。例如,可將派生自 Employee
的另一個名為Manager
的類新增至上一示例中。如果沒有應用XmlArrayItemAttribute,程式碼將在執行時失敗,原因是無法識別派生類型別。若要解決這個問題,每次為每個可接受型別(基類和派生類)設定 Type 屬性 (Property) 時,需要應用該屬性 (Attribute)
兩次。
- publicclass Group{
- [XmlArrayItem(Type = typeof(Employee)),
- XmlArrayItem(Type = typeof(Manager))]
- public Employee[] Employees;
- }
- publicclass Employee{
- publicstring Name;
- }
- publicclass Manager:Employee{
- publicint Level;
- }
序列化例項可能如下所示。
- <Group>
- <Employees>
- <Employee>
- <Name>Haley</Name>
- </Employee>
- <Employeexsi:type = "Manager">
- <Name>Ann</Name>
- <Level>3</Level>
- <Employee>
- </Employees>
- </Group>
將陣列作為元素序列進行序列化
通過將 XmlElementAttribute 應用於返回陣列的欄位,還可以將該陣列作為 XML 元素的平面序列進行序列化,如下所示。
- publicclass Group{
- [XmlElement]
- public Employee[] Employees;
- }
序列化例項可能如下所示。
- <Group>
- <Employees>
- <Name>Haley</Name>
- </Employees>
- <Employees>
- <Name>Noriko</Name>
- </Employees>
-
相關推薦
C#解析XML——使用屬性控制XML序列化
使用屬性可以控制物件的 XML 序列化。 預設情況下,XML 元素名稱由類或成員名稱確定。在名為 Book 的簡單類中,欄位 ISBN 將生成 XML 元素標記 <ISBN>,如下面的示例所示。 publicclass Book
Android中XML文件的序列化生成與解析
eval test director 南海 attribute trac cli found dir 首先,我把Person的實體類 package net.loonggg.test; public class Person { privat
C# Newtonsoft.Json JObject移除屬性,在序列化時忽略
-h 大小 reac plain bsp source images too 實例 原文 C# Newtonsoft.Json JObject移除屬性,在序列化時忽略 一、針對 單個 對象移除屬性,序列化時忽略處理 JObject實例的 Remove() 方法,可以在
把物件序列化為xml格式和反序列化
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Text;
Unity3d 實現物件的XML格式化和反序列化
但是網頁平臺不支援(如果資料庫放在服務端,就沒有這個問題了), 所以想到用XML格式來儲存資料,資料量也不大,操作也簡單,可以直接將物件存為xml檔案,而且玩家本地存檔也會用到。using UnityEngine;using System.Collections;using System.Collecti
C# json字符串反序列化
使用 字符 方法 new style col tty ado json.js 使用情景:開發中JS傳遞一個Json格式的字符串到後臺,後臺將json字符串轉化成list集合 1 public static class json 2 { 3 p
C# 使用 protobuf 進行對象序列化與反序列化
member 開源項目 serial all 序列化與反序列化 ace ogl serialize dll protobuf 是 google的一個開源項目,可用於以下兩種用途: (1)數據的存儲(序列化和反序列化),類似於xml、json等; (2)制作網絡通信協議。
C# Newtonsoft.Json JsonSerializerSettings 全局序列化設置
aps defaults rac n-n col property bsp () hidden Newtonsoft.Json.JsonSerializerSettings setting = new Newtonsoft.Json.JsonSerializerSettin
C 下JSON字串的反序列化
分享一下我老師大神的人工智慧教程!零基礎,通俗易懂!http://blog.csdn.net/jiangjunshow 也歡迎大家轉載本篇文章。分享知識,造福人民,實現我們中華民族偉大復興!  
C++ protobuf在QT中的序列化和反序列化
序列化 //自己定義的protobuf資料型別 NET_MSG msg; QByteArray msgBytes = QByteArray(msg.ByteSize(),0); //序列化 msg.SerializeToArray(msgBytes.data(), ms
《程序設計基礎》實驗題目2 c文件讀取(反序列化?) 鏈表排序
max malloc 哨兵 scan 遞歸 初始化 直接 元素 oid 題目: 每個學生的信息卡片包括學號、姓名和成績三項。定義存儲學生信息的單向鏈表的結點類型;編寫函 數,由文件依次讀入 n(n≥0)個學生的信息,創建一個用於管理學生信息的單向鏈表;編寫函數,對 該鏈
C#在unity中關於類序列化的簡述
一個類如果不是繼承MonoBehaviour,那他的物件在public的情況下也不會在屬性面板顯示。 如果某個欄位想故意在unity屬性面板隱藏可使用 [HideInInspector]//設定在面板中隱藏(不影響其他屬性) 此時需要手動將他序列化 可以使用[Se
DRF之解析器組件及序列化組件
除了 queryset 服務器 字段 color stat 需求 使用方式 更新 通過上一篇博客的學習,我們已經有了一個共識,Django無法處理application/json協議請求的數據,即,如果用戶通過application/json協議發送請求數據到達Djan
transient關鍵字與物件的屬性不被序列化
當某個物件的屬性不希望被序列化時,可以使用transient關鍵字進行宣告 import java.io.Serializable ; public class Person implements Serializable{private transient String
關於fastjson對空屬性不進行序列化
今天,在和移動端對接的過程中,發現gson對空字串,存在序列化到物件存在異常的問題,這個問題我們想從給物件設定預設值,這個我覺得對程式的侵入太深,況且容易因為疏忽,導致不全,然後採用一種統一的方式來解決,這樣就可以從上層解決問題,最終我們決定採用空屬性不進行序列化
C# 利用Newtonsoft.Json進行Json序列化與反序列化
我們可以通過DataContractJsonSerializer類來序列化一個物件為json字串。 public class JsonConvert<T> { public stat
用@XmlType的propOrder屬性 來指定序列化的順序。
預設情況下,Jaxb編組出來的xml中的欄位順序是隨機的,你可以使用@XmlType的propOrder屬性 來指定序列化的順序。 第一步:定義java類時,使用@XmlType(propOrder = { "id", "name", "age","book"})指
C#學習筆記(6)-序列化與反序列化
序列化 就是將物件轉換為二進位制 反序列化 就是將二進位制轉換為物件 作用 傳輸資料。資料在網路中是以二進位制形式傳輸的。 序列化的類不能被繼承 關鍵字 [Serializable]:定義一個類可被序列化 [Serializable]
在C#中使用Json.Net進行序列化和反序列化及定製化
序列化(Serialize)是將物件轉換成位元組流,並將其用於儲存或傳輸的過程,主要用途是儲存物件的狀態,以便在需要時重新建立該物件;反序列化(Deserialize)則是將上面的位元組流轉換為相應物件的過程;在.Net陣營中,Json.Net是由官方推薦的高效能開源序列化/反序列化工具,其官方網站:ht
C#反序列化:xml轉化為實體
class get c# sta spa bytes return doc 序列化 public static T DeserialXmlToModel<T>(string xmlDocument) { T cmdOb