序列化(serialization)是將物件的狀態資訊轉換為可以儲存或傳輸的形式的過程。
在序列化期間,物件將其當前狀態寫入到臨時或永續性儲存區。以後,可以通過從儲存區中讀取或反序列化物件的狀態,重新建立該物件。
把物件轉換為位元組序列的過程稱為物件的序列化。
把位元組序列恢復為物件的過程稱為物件的反序列化。
物件的序列化主要有兩種用途:
把物件的位元組序列永久地儲存到硬碟上,通常存放在乙個檔案中;
在網路上傳送物件的位元組序列。
為什麼要做序列化和反序列化?
.net程式執行時,物件都駐留在記憶體中;記憶體中的物件如果需要傳遞給其他系統使用;或者在關機時需要儲存下來以便下次再次啟動程式使用就需要序列化和反序列化。
我們可以把物件序列化為不同的格式,比如說,json序列化、xml序列化、二進位制序列化、soap序列化等
簡單的xml序列化**
class
xml}
注意引用命名空間system.xml.serialization
輸出結果如下:
<?xml version="1.0" encoding="gb2312"?>
10
將上述xml反序列化static
void
main
(string
args)
}
執行結果
i=10
首先遇到了問題:
c#檔案讀取寫入操作
想法:資料庫查詢資料生成datatable,將datatable以xml格式輸出到xml檔案中
但是datatable如何轉換為xml格式,目前被這個給難住了,還在研究中。
查閱文件發現
以xml形式寫入datatable的當前內容。
抱著試一試的心態,我加入了如下的**:
dataset ds =
newdataset()
;//dataset contains a lot of table
da.fill
(ds)
; ds.
writexml
("write.xml"
, xmlwritemode.writeschema)
;datatable dt = ds.tables[0]
; ds.
writexml
(@"d:\ck.xml");
//writexml method
然後發現在d盤下的確生成了乙個xml檔案,並且裡面的內容也確實是xml格式的。
所以,可以通過datatable.writexml 方法將datatable中的內容以xml形式寫入的。
發現了乙個問題,就是xml檔案中根節點和第乙個子節點的名稱不是students和student
將上面第一句改為dataset ds = new dataset(「students」);
根節點的問題解決了,但是子節點的問題還在。
——將xml反序列化為集合輸出
using system;
using system.collections.generic;
using system.io;
using system.linq;
using system.text;
using system.threading.tasks;
using system.xml.serialization;
namespace _01xmlserialize
,new
userinfo()
,new
userinfo()
,new
userinfo()
,new
userinfo()
,new
userinfo()
};static
void
main
(string
args)
//序列化物件生成檔案
writesinglexml()
;//反序列化檔案生成物件
readlistxml()
;
console.
readkey()
;}///
/// 從xml檔案中反序列化物件
///
public
static
void
readlistxml()
} console.
writeline
("反序列化成功");
}///
/// 序列化物件到xml檔案
///
public
static
void
writesinglexml()
console.
writeline
("寫入成功");
}}}
序列化和反序列化 C 序列化與反序列化。
序列化介紹 把物件用一種新的格式來表示。系列化只序列化資料。序列化不建議使用自動屬性 為什麼要序列化 將乙個複雜的物件轉換流,方便儲存與資訊交換。class program class person public int age 二進位制序列化 就是將物件變成流的過程,把物件變成byte class...
序列化與反序列化
把複雜的資料型別壓縮到乙個字串中 serialize 把變數和它們的值編碼成文字形式 unserialize 恢復原先變數 eg stooges array moe larry curly new serialize stooges print r new echo print r unserial...
序列化與反序列化
序列化是將物件處理為位元組流以儲存物件或傳輸到記憶體 資料庫或檔案。其主要目的是儲存物件的狀態,以便可以在需要時重新建立物件。相反的過程稱為反序列化。通過序列化,開發人員可以儲存物件的狀態,並在需要時重新建立該物件,從而提供物件的儲存以及資料交換。通過序列化,開發人員還可以執行類似如下的操作 通過 ...