透過.NET裡面的Xml序列化器實作將內容寫入到xml檔案中。這裡介紹list集合的序列化。
序列化 (Serialization)將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。在序列化期間,物件將其目前狀態寫入到臨時或持久性儲存區。以後,可以透過從儲存區讀取或反序列化物件的狀態,重新建立該物件。
序列化使其他程式碼可以檢視或修改那些不序列化便無法存取的物件實例資料。確切地說,程式碼執行序列化需要特殊的權限:即指定了 SerializationFormatter 標誌的 SecurityPermission。在預設策略下,透過 Internet 下載的程式碼或 Intranet 程式碼不會授予該權限;只有本機電腦上的程式碼才會被授予該權限。
通常,物件實例的所有欄位都會被序列化,這意味著資料會被表示為實例的序列化資料。這樣,能夠解釋該格式的程式碼有可能能夠確定這些資料的值,而不依賴該成員的可存取性。類似地,反序列化從序列化的表示形式中提取數據,並直接設定物件狀態,這也與可訪問性規則無關。
對於任何可能包含重要的安全性資料的對象,如果可能,應該使該對像不可序列化。如果它必須為可序列化的,請嘗試產生特定欄位來保存不可序列化的重要資料。如果無法實現這一點,則應注意該資料會被公開給任何擁有序列化權限的程式碼,並確保不讓任何惡意程式碼獲得該權限。
總結來說:序列化是將一個複雜的物件轉換流,方便我們的儲存與資訊交換。在安全方面自己了解的也不是太多,主要是如果一些資訊要保密,就定義它為不可被序列化的,防止他人進行反序列化得知。鄙人是個菜鳥,這裡如果對序列化有高深見解的請留下您寶貴的評論,不勝感激。
(1)先建立一個person類,其中包含name,age,email三個屬性。
<span style="font-family:Microsoft YaHei;font-size:18px;">public class person { public string Name { set; get; } [XmlIgnore] public int Age { get; set; } public string Email { get; set; } }</span>
注意:上面程式碼中[XmlIgnore]是對Age屬性不可序列化操作。這是Xml序列化器專有的不可序列化特性。對於其他物件就是用[NonSerialized]。
(2)透過list集合加入資料實現xml序列化
<span style="font-family:Microsoft YaHei;font-size:18px;">List<person> list=new List<person> (); list.Add(new person() { Name = "istari", Age = 22, Email = "1061399756@qq.com" }); list.Add(new person() { Name = "ss", Age = 22, Email = "1061399756@qq.com" }); list.Add(new person() { Name = "ww", Age = 22, Email = "521@qq.com" }); //实现xml序列化 XmlSerializer xml = new XmlSerializer(typeof(List<person>)); using (FileStream fs=File.OpenWrite ("List.xml")) { xml.Serialize(fs, list); } Console.WriteLine("OK"); Console.ReadKey();</span>
(3)Result
透過這種方法寫入xml檔的格式是Xml序列化器內部設定好的格式。自己不用改。也可以自己建立一個序列化器,不用系統的序列化器。下篇文章為大家分享。
以上就是XML(5)序列化寫入xml檔案的內容,更多相關內容請關注PHP中文網(www.php.cn)!