六月婷婷综合激情-六月婷婷综合-六月婷婷在线观看-六月婷婷在线-亚洲黄色在线网站-亚洲黄色在线观看网站

明輝手游網(wǎng)中心:是一個(gè)免費(fèi)提供流行視頻軟件教程、在線學(xué)習(xí)分享的學(xué)習(xí)平臺(tái)!

串行化XML(3)

[摘要]由 串行化XML(一) 、 串行化XML(二) 可以將對(duì)象很方便、簡(jiǎn)單的串行化為XML格式, 除了可以將對(duì)象串行化為XML格式以外,還可以將其串行化為二進(jìn)制、soap格式。NET Framework通過Reflection提供自動(dòng)Serialization的機(jī)制。當(dāng)一個(gè)對(duì)象被序列化(Serial...
由 串行化XML(一) 、 串行化XML(二) 可以將對(duì)象很方便、簡(jiǎn)單的串行化為XML格式, 除了可以將對(duì)象串行化為XML格式以外,還可以將其串行化為二進(jìn)制、soap格式。

NET Framework通過Reflection提供自動(dòng)Serialization的機(jī)制。當(dāng)一個(gè)對(duì)象被序列化(Serialized)的時(shí)候,它的類名,Assembly,以及類實(shí)例的所有數(shù)據(jù)成員都將被寫入存儲(chǔ)介質(zhì)中。Serialization引擎保持對(duì)所有已經(jīng)被序列化的對(duì)象引用的追蹤,以確保相同的對(duì)象引用最多只被序列化一次。
通常,一個(gè)Serialization過程會(huì)由formatter(例如BinaryFormatter、SoapFormatter)的Serialize方法引發(fā)。

一個(gè)類能夠被序列化有兩種方式:

¨ 將此class簡(jiǎn)單地標(biāo)記為Serializable

¨ 為此class實(shí)現(xiàn)ISerializable接口,并將此class標(biāo)記為Serializable。
聲明一個(gè)可被序列化的類

<Serializable()> _

Public Class Book

Public bookname As String

Public bookID As Integer

End Class

使用BinaryFormatter來將上面的類序列化為二進(jìn)制格式文件Book.dat,BinaryFormatter位于

System.Runtime.Serialization.Formatters.Binary命名空間


Dim book As New book

book.BookID = 1

book.BookName = "數(shù)學(xué)"

Dim formatter As BinaryFormatter = New BinaryFormatter

Dim stream As stream = New FileStream("Book.dat", FileMode.Create, FileAccess.Write, FileShare.None)

formatter.Serialize(stream, book)

stream.Close()

經(jīng)過BinaryFormatter序列化 (serialize)的數(shù)據(jù)仍然能夠通過BinaryFormatter反序列化(deserialize)回來。

Dim formatter As BinaryFormatter = New BinaryFormatter

Dim stream As stream = New FileStream("Book.dat", FileMode.Open, FileAccess.Read, FileShare.None)

Dim book As Book = CType(formatter.Deserialize(stream), Book)

stream.Close()

MessageBox.Show("Book Name:" & book.bookname & vbCrLf & "Book ID:" & book.bookID)

同串行化為xml一樣,也可以忽略任意一個(gè)域,可以使用NonSerialized屬性進(jìn)行選擇

<NonSerialized()> _

Public bookname As String

用類似的方法同樣也可以將對(duì)象序列化為SOAP格式,我們使用SoapFormatter。

Dim book As New book

book.bookID = 1

book.bookname = "English"

Dim formatter As SoapFormatter = New SoapFormatter

Dim stream As stream = New FileStream("Book.xml", FileMode.Create, FileAccess.Write, FileShare.None)

formatter.Serialize(stream, Book)

stream.Close()

所生成的Book.xml格式為:

<SOAP-ENV:Envelope xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:SOAP-ENC="http://schemas.xmlsoap.org/soap/encoding/" xmlns:SOAP-ENV="http://schemas.xmlsoap.org/soap/envelope/" xmlns:clr="http://schemas.microsoft.com/soap/encoding/clr/1.0" SOAP-ENV:encodingStyle="http://schemas.xmlsoap.org/soap/encoding/">

<SOAP-ENV:Body>

<a1:Book id="ref-1" xmlns:a1="http://schemas.microsoft.com/clr/assem/e%2C%20Version%3D1.0.1.0%2C%20Culture%3Dneutral%2C%20PublicKeyToken%3Dnull">

<bookname id="ref-3">English</bookname>

<bookID>1</bookID>

</a1:Book>

</SOAP-ENV:Body>

</SOAP-ENV:Envelope>

總結(jié):

Serialization是.NET中一種實(shí)現(xiàn)對(duì)象持久性(Persistent)的機(jī)制。它是一個(gè)將對(duì)象中的數(shù)據(jù)轉(zhuǎn)換成一個(gè)單一元素(通常是Stream)的過程。它的逆過程是Deserialization。Serialization的核心概念是將一個(gè)對(duì)象的所有數(shù)據(jù)看作一個(gè)獨(dú)立的單元。
一般說來,在兩種情況下非常需要Serialization:

1) 當(dāng)我們希望能夠?qū)?duì)象當(dāng)前的狀態(tài)完整地保存到存儲(chǔ)介質(zhì)中,以便我們以后能夠精確地還原對(duì)象時(shí)

2) 當(dāng)我們希望將對(duì)象從一個(gè)應(yīng)用程序空間(Application domain)傳遞到另一個(gè)應(yīng)用程序空間時(shí)。



標(biāo)簽:串行化XML(3) 

相關(guān)文章

主站蜘蛛池模板: 天堂网2021天堂手机版丶 | 亚洲成人第一页 | 欧美亚洲激情 | 四虎精品成人免费影视 | 午夜黄大色黄大片美女图片 | 亚洲福利视频一区 | 日韩综合在线视频 | 青青草国产在线视频 | 日韩 欧美 亚洲 国产 | 欧美怡红院视频一区二区三区 | 一区二区三区视频在线观看 | 亚洲欧美伦理 | 做a网站| 又粗又大又硬又爽的免费视频 | 中文字幕第二一区 | 日本免费网站在线观看 | 亚洲欧美日韩在线2020 | 亚洲va韩国va欧美va | 欧美亚洲第一页 | 色综合久久久久久久久久久 | 日韩怡红院 | 欧美亚洲不卡 | 四虎影视国产在线观看精品 | 天天欲色成人综合网站 | 日日噜噜夜夜狠狠久久aⅴ 日日噜噜夜夜狠狠扒开双腿 | 日本三级带日本三级带黄国产 | 色站app| 日韩第三页 | 日本成人免费网站 | 亚洲国产2017男人a天堂 | 天天躁夜夜躁狠狠躁20216 | 青青草影院在线观看 | 日本在线免费 | 天天躁日日躁狠狠躁欧美日韩 | 日本小视频在线 | 日韩a级片视频 | 日本不卡在线观看免费v | 一个色综合网 | 色妹子影院 | 欧美在线观看一区 | 日本大片久久久高清免费看 |