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

明輝手游網中心:是一個免費提供流行視頻軟件教程、在線學習分享的學習平臺!

串行化XML(3)

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

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

一個類能夠被序列化有兩種方式:

¨ 將此class簡單地標記為Serializable

¨ 為此class實現ISerializable接口,并將此class標記為Serializable。
聲明一個可被序列化的類

<Serializable()> _

Public Class Book

Public bookname As String

Public bookID As Integer

End Class

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

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


Dim book As New book

book.BookID = 1

book.BookName = "數學"

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()

經過BinaryFormatter序列化 (serialize)的數據仍然能夠通過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一樣,也可以忽略任意一個域,可以使用NonSerialized屬性進行選擇

<NonSerialized()> _

Public bookname As String

用類似的方法同樣也可以將對象序列化為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>

總結:

Serialization是.NET中一種實現對象持久性(Persistent)的機制。它是一個將對象中的數據轉換成一個單一元素(通常是Stream)的過程。它的逆過程是Deserialization。Serialization的核心概念是將一個對象的所有數據看作一個獨立的單元。
 一般說來,在兩種情況下非常需要Serialization:

1) 當我們希望能夠將對象當前的狀態完整地保存到存儲介質中,以便我們以后能夠精確地還原對象時

2) 當我們希望將對象從一個應用程序空間(Application domain)傳遞到另一個應用程序空間時。



標簽:串行化XML(3) 
主站蜘蛛池模板: 三级在线观看免播放网站 | 中日韩视频在线看免费观看 | 日日干夜夜骑 | 在线亚洲+欧美+日本专区 | 欧美夜夜夜 | 午夜在线日韩免费精品福利 | 手机国产乱子伦精品视频 | 欲色影视天天一区二区三区色香欲 | 日本一本高清视频 | 日韩视频在线免费观看 | 午夜特片网| 四虎成人精品免费影院 | 奇米综合 | 亚洲视频污 | 亚洲国产日韩欧美在线 | 亚洲一区视频 | 午夜视频在线观看免费观看在线观看 | 色中文在线 | 五月伊人婷婷 | 中文区永久区乱码六区 | 日韩黄色在线视频 | 午夜影皖 | 天堂网在线最新版www中文网 | 亚洲第一成人影院 | 日本爱爱视频 | 亚洲h在线观看 | 一级做a免费视频 | 色国产精品一区在线观看 | 中文在线免费视频 | 午夜性刺激在线观看视频 | 五月婷婷六月丁香 | 欧美性xxxxx极品 | 日日摸夜夜添夜夜爽免费视频 | 人人狠狠综合久久亚洲88 | 青青国产成人久久91网 | 亚洲成a人片在线观看中文动漫 | 色香色香欲天天天影视综合网 | 中文字幕亚洲综合久久男男 | 日韩专区第一页 | 青春草在线播放 | 日韩欧美一区二区不卡 |