|
作者:SPARON MSN:ZHAOKEYONG@HOTMAIL.COM
兒天沒寫東東了,這兒天研究了下.NET對象的XML序列化,雖不是很深入,但還是記下,就算是學(xué)習(xí)道路的一個里程碑吧。
在WEBFORM開發(fā)中有很大一個難題是數(shù)據(jù)庫的調(diào)用,雖然DATASET對數(shù)據(jù)的讀取有了很大進(jìn)步,但是每第一次訪問網(wǎng)站時總會讀很久的數(shù)據(jù),有沒有一種很的辦法來控制呢?答案是肯定的,在.NET下有一種技術(shù)叫做對象序列化,它可以將對象序列化為二進(jìn)制文件、XML文件、SOAP文件,這樣,使用經(jīng)過序列化的流進(jìn)行傳輸效率就得到了大大的提升。
在.NET中提供了兩種序列化:二進(jìn)制序列化、XML和SOAP序列化。對于WEB應(yīng)用來說,用得最多的是第二種———XML和SOAP序列化。
XML 序列化將對象的公共字段和屬性或者方法的參數(shù)和返回值轉(zhuǎn)換(序列化)為符合特定 XML 架構(gòu)定義語言 (XSD) 文檔的 XML 流。XML 序列化生成強(qiáng)類型的類,并為存儲或傳輸目的將其公共屬性和字段轉(zhuǎn)換為序列格式(在此情況下為 XML)。
注意 XML 序列化不轉(zhuǎn)換方法、索引器、私有字段或只讀屬性(只讀集合除外)。
理解了基本的理論后我們來看看XML是如何進(jìn)行對象序列化的。 看死板的文字是非??菰锏?,還是用CODE來說明問題直截了當(dāng)。
XML文件序列: SerObj obj = new SerObj(); obj.name = "sparon"; obj.age = 23; obj.sex = true; XmlSerializer ser = new XmlSerializer(typeof (SerObj)); Stream file = new FileStream("sptxt.xml", FileMode.Create, FileAccess.Write); ser.Serialize(file, obj);
SerObj對象如下: public class SerObj { public string name; public int age; public bool sex;//true為男;false為女; public SerObj() { } }
其實關(guān)鍵步驟只有兩步: XmlSerializer ser = new XmlSerializer(typeof (SerObj)); 使用SerObj對象的類型來造一個XmlSerializer,然后使用Serialize方法將Stream對象和SerObj對象一起傳入,序列出一個XML文件。 XML文件如下所示: <?xml version="1.0"?> <SerObj xmlns:xsi="http://www./2001/XMLSchema-instance" xmlns:xsd="http://www./2001/XMLSchema"> <name>sparon</name> <age>23</age> <sex>true</sex> </SerObj>
反序列化步驟如下: SerObj obj = new SerObj(); XmlSerializer ser = new XmlSerializer(typeof (SerObj)); Stream file = new FileStream("sptxt.xml", FileMode.Open , FileAccess.Read ); obj=(SerObj )ser.Deserialize(file);
其差別就在后兩句而關(guān)鍵的就只有obj=(SerObj )ser.Deserialize(file);一句。這個是反序列化XML文件并轉(zhuǎn)換為SerObj類型賦予obj。
注意:使用Serialize和Deserialize需要指明命令空間System.Xml.Serialization
個人總結(jié) 序列(Serialize) :將對象序列為文件。 反序列化(Deserialize):將文件序列為對象。
|
|
|