.net framework提供了對應的system.xml.seriazliation.xmlserializer負責把物件序列化到xml,和從xml中反序列化為物件。serializer的使用比較直觀,需要多注意的是xml序列化相關的attribute,怎麼把這些attribute應用到我們的物件,以及物件公共屬性上面去,生成滿足預期格式的xml。序列化常用attribute講解說明:需求**於一檔案轉換專案,將乙個xml格式的檔案轉換成另一種格式。公司的框架也大量使用了xmlserializer來處理系統裡大量配置,每乙個檔案配置檔案對應一種型別的多個配置項。
[xmlrootattribute("mycity", namespace="abc.abc", isnullable=false)] // 當該類為xml根節點時,以此為根節點名稱。
public class city
[xmlattribute("areaname")] // 表現為xml節點屬性。<... areaname="...">
public string name
[xmlelementattribute("areaid", isnullable = false)] // 表現為xml節點。...
public string id
[xmlarrayattribute("areas")] // 表現為xml層次結構,根為areas,其所屬的每個該集合節點元素名為類名。
public area areas
[xmlelementattribute("area", isnullable = false)] // 表現為水平結構的xml節點。...
public area areas
[xmlignoreattribute] // 忽略該元素的序列化。
類定義:
1) orderentity單據類xml裡是最頂層的root節點。
/// /// 訂單資訊
///
[serializable]
[xmlroot("document")]
public class orderentity
}
2) orderevent單據型別(事件)描述實體
/// /// 單據型別(事件)描述資訊
///
[serializable]
public class orderevent
/// /// 庫存動作
///
[xmlattribute("mainaction")]
public string mainaction
/// /// 單據明細項
///
[xmlarray("datafield"), xmlarrayitem("data")]
public orderdetail details
}
3)、資料明細類
/// /// 單據明細專案
///
[serializable]
public class orderdetail
[xmlattribute("actor")]
public string actor
[xmlattribute("actdate")]
public string actdate
[xmlattribute("corporderid")]
public string corporderid
[xmlattribute("fromcorpid")]
public string fromcorpid
[xmlattribute("tocorpid")]
public string tocorpid
[xmlattribute("ownerid")]
public string ownerid
}
4)序列化的實際**
#region 初始化訂單物件並完成序列化
orderentity result_file_object = new orderentity}};
program.serializertoxml(path + "\\" + filename, result_file_object);
#endregion
/// /// 把物件序列化成xml檔案
///
/// 物件的類
/// 輸出的檔案和路徑
/// 物件的例項
public static void serializertoxml(string outfile, t t) where t : class
}
MongoDB實戰經驗分享
nosql並不是no sql,而是指not only sql。nosql的出現是為了彌補sql資料庫因為事務等機制帶來的對海量資料 高併發請求的處理的效能上的欠缺。nosql不是為了替代sql而出現的,它是一種替補方案,而不是解決方案的首選。絕大多數的nosql產品都是基於大記憶體和高效能隨機讀寫的...
微服務實戰經驗分享
在過去的幾個月裡,我們已經聽到很多關於微服務的優缺點了。微服務真的只是soa嗎?微服務確實有助於進行複雜系統架構嗎?不論大家怎麼說,有一些公司已經轉向或正準備轉向基於微服務的方法了。他們在實踐過程中分享自己獲得的正面或負面的經驗,是很自然的事。最近,droplet公司的tom livesey分享了他...
FPGA系統設計實戰經驗分享 硬體篇
產品,或者實驗室的師兄們都用那個公司的產品多一些等等。如果自己對那個公司的產品比較熟悉,還是不要輕易更換。因為學習軟體和了解晶元結構還是需要一些時間的,而且也會引入一些設計風險。人一般會有慣性的思維的,往往會把一些經驗帶到新的專案中,而實際上不同廠商的晶元在設計細節方面還是有些不同的,對這個公司的晶...