<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
序列化(seriallization): 將物件轉化為便於傳輸的資料格式, 常見的序列化格式:二進位制格式,位元組陣列,json字串,xml字串。
反序列化(deseriallization):將序列化的資料恢復為物件的過程。
該類用一種高度鬆散耦合的方式提供序列化服務。你的類不需要繼承特別的基礎類別,而且它們也不需要實現特別的介面。相反,你只需在你的類或者這些類的公共域以及讀/寫屬性里加上自定義的特性。XmlSerializer通過反射機制讀取這些特性並用它們將你的類和類成員對映到xml元素和屬性(在物件和 XML 檔案之間進行序列化和反序列化操作)。
using System.IO; using System.Xml.Serialization; namespace Practices.Common { public class SimpleSerializer { /// <summary> /// Model實體物件序列化為XML字串 /// </summary> /// <typeparam name="T">物件型別</typeparam> /// <param name="t">Model實體物件</param> /// <returns></returns> public static string SerializeXMLL<T>(T t) { using (StringWriter sw = new StringWriter()) { XmlSerializer xmlSerializer = new XmlSerializer(t.GetType()); xmlSerializer.Serialize(sw, t); return sw.ToString(); } } /// <summary> /// XML反序列化為物件 /// </summary> /// <typeparam name="T">物件型別</typeparam> /// <param name="xml">xml字串</param> /// <returns></returns> public static T Deserialize<T>(string xml) { XmlSerializer xmlSerializer = new XmlSerializer(typeof(T)); StringReader stringReader = new StringReader(xml); return (T)xmlSerializer.Deserialize(stringReader); } } }
該類主要控制當屬性目標由XML序列化時生成的XML節點。
/// <summary> /// Envelope /// </summary> [XmlType(TypeName = "envelope")] public class CityRes { public Header header { get; set; } public Response response { get; set; } }
該類用於指示公共欄位或屬性在XML序列化或反序列化包含它們的物件時表示XML元素。
/// <summary> /// Envelope /// </summary> public class CityRes { /// <summary> /// header /// </summary> [XmlElement("header")] public Header header { get; set; } /// <summary> /// response /// </summary> [XmlElement("response")] public Response response { get; set; } }
該類指定XML序列化必須將類成員序列化為XML屬性。
/// <summary> /// Version /// </summary> public class Version { /// <summary> /// port /// </summary> [XmlAttribute("port")] public string port { get; set; } /// <summary> /// host /// </summary> [XmlAttribute("host")] public string host { get; set; } /// <summary> /// text /// </summary> [XmlAttribute("text")] public string text { get; set; } }
該類主要用於XML元素陣列的應用(相當於就是集合的宣告)。
[XmlArray] public Item []Items { get{return items;} set{items = value;} }
當Xml檔案序列化或反序列化時使用該特性修飾的成員會作為XML文書處理。
[System.Xml.Serialization.XmlTextAttribute()] public string[] Text { get { return this.textField; } set { this.textField = value; } }
指示該特性修飾的物件在Xml序列化時不會序列化該特性指定的元素。
public class TeamGroup { [XmlIgnore] public string Comment; public string GroupName; }
通過將下表中的特性應用於類和類成員,可以控制 XmlSerializer 序列化或反序列化該類的範例的方式。 若要了解這些屬性如何控制 XML 序列化,請參閱使用屬性控制 XML 序列化。
特性 | 適用物件 | 指定 |
---|---|---|
XmlAnyAttributeAttribute | 公共欄位、屬性、引數或返回 XmlAttribute 物件陣列的返回值。 | 反序列化時,將會使用 XmlAttribute 物件填充陣列,而這些物件代表對於架構未知的所有 XML 特性。 |
XmlAnyElementAttribute | 公共欄位、屬性、引數或返回 XmlElement 物件陣列的返回值。 | 反序列化時,將會使用 XmlElement 物件填充陣列,而這些物件代表對於架構未知的所有 XML 元素。 |
XmlArrayAttribute | 公共欄位、屬性、引數或返回複雜物件的陣列的返回值。 | 陣列成員將作為 XML 陣列的成員生成。 |
XmlArrayItemAttribute | 公共欄位、屬性、引數或返回複雜物件的陣列的返回值。 | 可以插入陣列的派生型別。 通常與 XmlArrayAttribute 一起應用。 |
XmlAttributeAttribute | 公共欄位、屬性、引數或返回值。 | 成員將作為 XML 屬性進行序列化。 |
XmlChoiceIdentifierAttribute | 公共欄位、屬性、引數或返回值。 | 可以使用列舉進一步消除成員的歧義。 |
XmlElementAttribute | 公共欄位、屬性、引數或返回值。 | 欄位或屬性將作為 XML 元素進行序列化。 |
XmlEnumAttribute | 作為列舉識別符號的公共欄位。 | 列舉元的元素名稱。 |
XmlIgnoreAttribute | 公共屬性和公共欄位。 | 序列化包含類時,應該忽略屬性或欄位。 |
XmlIncludeAttribute | 公共派生類宣告,以及 Web 服務描述語言 (WSDL) 檔案的公共方法的返回值。 | 生成要在序列化時識別的架構時,應該將該類包括在內。 |
XmlRootAttribute | 公共類宣告。 | 控制視為 XML 根元素的屬性目標的 XML 序列化。 使用該屬性可進一步指定名稱空間和元素名稱。 |
XmlTextAttribute | 公共屬性和公共欄位。 | 屬性或欄位應該作為 XML 文字進行序列化。 |
XmlTypeAttribute | 公共類宣告。 | XML 型別的名稱和名稱空間。 |
到此這篇關於.NET中XML序列化和反序列化常用類和屬性小結的文章就介紹到這了,更多相關.NET XML序列化和反序列化內容請搜尋it145.com以前的文章或繼續瀏覽下面的相關文章希望大家以後多多支援it145.com!
相關文章
<em>Mac</em>Book项目 2009年学校开始实施<em>Mac</em>Book项目,所有师生配备一本<em>Mac</em>Book,并同步更新了校园无线网络。学校每周进行电脑技术更新,每月发送技术支持资料,极大改变了教学及学习方式。因此2011
2021-06-01 09:32:01
综合看Anker超能充系列的性价比很高,并且与不仅和iPhone12/苹果<em>Mac</em>Book很配,而且适合多设备充电需求的日常使用或差旅场景,不管是安卓还是Switch同样也能用得上它,希望这次分享能给准备购入充电器的小伙伴们有所
2021-06-01 09:31:42
除了L4WUDU与吴亦凡已经多次共事,成为了明面上的厂牌成员,吴亦凡还曾带领20XXCLUB全队参加2020年的一场音乐节,这也是20XXCLUB首次全员合照,王嗣尧Turbo、陈彦希Regi、<em>Mac</em> Ova Seas、林渝植等人全部出场。然而让
2021-06-01 09:31:34
目前应用IPFS的机构:1 谷歌<em>浏览器</em>支持IPFS分布式协议 2 万维网 (历史档案博物馆)数据库 3 火狐<em>浏览器</em>支持 IPFS分布式协议 4 EOS 等数字货币数据存储 5 美国国会图书馆,历史资料永久保存在 IPFS 6 加
2021-06-01 09:31:24
开拓者的车机是兼容苹果和<em>安卓</em>,虽然我不怎么用,但确实兼顾了我家人的很多需求:副驾的门板还配有解锁开关,有的时候老婆开车,下车的时候偶尔会忘记解锁,我在副驾驶可以自己开门:第二排设计很好,不仅配置了一个很大的
2021-06-01 09:30:48
不仅是<em>安卓</em>手机,苹果手机的降价力度也是前所未有了,iPhone12也“跳水价”了,发布价是6799元,如今已经跌至5308元,降价幅度超过1400元,最新定价确认了。iPhone12是苹果首款5G手机,同时也是全球首款5nm芯片的智能机,它
2021-06-01 09:30:45