欧美一级特黄大片做受成人-亚洲成人一区二区电影-激情熟女一区二区三区-日韩专区欧美专区国产专区

如何利用XMLSerializer將對象串行化到XML

這篇文章主要為大家展示了“如何利用XMLSerializer將對象串行化到XML”,內容簡而易懂,條理清晰,希望能夠幫助大家解決疑惑,下面讓小編帶領大家一起研究并學習一下“如何利用XMLSerializer將對象串行化到XML”這篇文章吧。

成都創(chuàng)新互聯專注為客戶提供全方位的互聯網綜合服務,包含不限于成都做網站、網站建設、外貿營銷網站建設、騰沖網絡推廣、小程序開發(fā)、騰沖網絡營銷、騰沖企業(yè)策劃、騰沖品牌公關、搜索引擎seo、人物專訪、企業(yè)宣傳片、企業(yè)代運營等,從售前售中售后,我們都將竭誠為您服務,您的肯定,是我們最大的嘉獎;成都創(chuàng)新互聯為所有大學生創(chuàng)業(yè)者提供騰沖建站搭建服務,24小時服務熱線:18982081108,官方網址:aaarwkj.com

XML的魅力
   串行化XML是指為了方便存儲或傳輸,把一個對象的公共的域和屬性保存為一種串行格式(這里是XML格式)的過程。非串行化則是使用串行的狀態(tài)信息將對象從串行XML狀態(tài)還原成原始狀態(tài)的過程。因此,可以把串行化看作是將對象的狀態(tài)保存到流或緩沖區(qū)中的一種方法。

串行化的目的是數據存儲和數據轉換。數據存儲指的是在用戶會話時保存數據。當應用程序關閉時,數據被保存(串行化),而當用戶回來時,數據又被重新加載(非串行化)。數據轉換指將數據變換成能被另一個系統(tǒng)識別的格式。使用串行化和XML,可以很方便的進行數據轉換。

對象中的數據可以是類、方法、屬性、私有類型、數組,在System.Xml.XmlElement或System.Xml.XmlAttribute對象中,它甚至可以是內嵌的XML。

System.Xml.Serialization命名空間中的關鍵類是XmlSerializer。當然在該命名空間中還包括有關XML其他方面以及SOAP相關的其他類,不過我們的重點是XmlSerializer類。

XmlSerializer
   XmlSerializer類提供了把對象串行化為XML文件及把XML文檔非串行化為對象的方法。它還能讓用戶指定對象如何轉化為XML??梢园褜⒈淮谢膶ο蟮念愋妥鳛轭悩嬙旌瘮档膮?。下面的C# 代碼說明了構造函數的用法。

    XmlSerializer ser = new XmlSerializer(typeof(objectToSerialize));

下面是等價的VB.NET代碼:

    Dim ser As New XmlSerializer(GetType(objectToSerialize))

實際的串行化過程在XmlSerializer類的Serialize方法中實現。該方法允許在串行化過程中調用TextWriter、Stream和XmlWriter對象。下面的例子代碼說明了如何調用該方法。在本例中一個對象被串行化保存到本地磁盤的一個文件當中。例子中首先是類聲明,后面緊接著是串行化源代碼。

using System;
namespace BuilderSerialization {
public class Address {
public Address() {}
public string Address1;
public string Address2;
public string City;
public string State;
public string Zip;
public string Country;
} }
using System;
namespace BuilderSerialization {
public class Author {
public Author() { }
public string FirstName;
public string MiddleName;
public string LastName;
public string Title;
public string Gender;
public Address AddressObject;
} }
namespace BuilderSerialization {
public class Book {
public Book() { }
public string Title;
public Author AuthorObject;
public string ISBN;
public double RetailPRice;
public string Publisher;
}}
using System;
using System.Xml.Serialization;
using System.IO;
namespace BuilderSerialization {
class TestClass {
static void Main(string[] args) {
Book BookObject = new Book();
XmlSerializer ser = new XmlSerializer(typeof(Book));
TextWriter writer = new StreamWriter("booktest.xml");
BookObject.Title = "Practical LotusScript";
BookObject.ISBN = "1884777767 ";
BookObject.Publisher = "Manning Publications";
BookObject.RetailPrice = 43.95;
BookObject.AuthorObject = new Author();
BookObject.AuthorObject.FirstName = "Tony";
BookObject.AuthorObject.LastName = "Patton";
BookObject.AuthorObject.Gender = "Male";
BookObject.AuthorObject.AddressObject = new Address();
BookObject.AuthorObject.AddressObject.Address1 = "1 Main Street";
BookObject.AuthorObject.AddressObject.City = "Anywhere";
BookObject.AuthorObject.AddressObject.State = "KY";
BookObject.AuthorObject.AddressObject.Zip = "40000";
BookObject.AuthorObject.AddressObject.Country = "USA";
ser.Serialize(writer, BookObject);
writer.Close();
} } }

上面的代碼把三個對象變?yōu)橐粋€對象,因此在串行化過程中產生一個XML文件。以下是例子程序產生的XML文檔:

<?xml version="1.0" encoding="utf-8"?>
<Book xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
<Title>Practical LotusScript</Title>
<AuthorObject>
<FirstName>Tony</FirstName>
<LastName>Patton</LastName>
<Gender>Male</Gender>
<AddressObject>
<Address1>1 Main Street</Address1>
<City>Anywhere</City>
<State>KY</State>
<Zip>40000</Zip>
<Country>USA</Country>
</AddressObject>
</AuthorObject>
<ISBN>1884777767 </ISBN>
<RetailPrice>43.95</RetailPrice>
<Publisher>Manning Publications</Publisher>
</Book>

注意串行化過程也能處理對象數據的嵌套。數據被轉換成可識別的格式,方便了數據重載(非串行化)以及向另一個系統(tǒng)的數據傳輸。在數據傳輸過程時,接收方系統(tǒng)需要知道XML文件的格式(如果預先不知道的話)。因此需要提供一個XML schema文件。.NET框架中的XSD.exe工具可以為串行化XML生成一個schema文件。

下面是用VB.NET編寫的例子代碼:

Public Class Address
Public Address1 As String
Public Address2 As String
Public City As String
Public State As String
Public Zip As String
Public Country As String
End Class
Public Class Author
Public FirstName As String
Public MiddleName As String
Public LastName As String
Public Title As String
Public Gender As String
Public AddressObject As Address
End Class
Public Class Book
Public AuthorObject As Author
Public Title As String
Public ISBN As String
Public RetailPrice As Double
Public Publisher As String
End Class
Imports System.Xml.Serialization
Imports System.IO
Module Module1
Sub Main()
Dim BookObject As New Book
Dim ser As New XmlSerializer(GetType(Book))
Dim writer As New StreamWriter("booktest.xml")
With BookObject
.Title = "Practical LotusScript"
.ISBN = "1884777767 "
.Publisher = "Manning Publications"
.RetailPrice = 43.95
.AuthorObject = New Author
.AuthorObject.FirstName = "Tony"
.AuthorObject.LastName = "Patton"
.AuthorObject.Gender = "Male"
.AuthorObject.AddressObject = New Address
.AuthorObject.AddressObject.Address1 = "1 Main Street"
.AuthorObject.AddressObject.City = "Anywhere"
.AuthorObject.AddressObject.State = "KY"
.AuthorObject.AddressObject.Zip = "40000"
.AuthorObject.AddressObject.Country = "USA"
End With
ser.Serialize(writer, BookObject)
writer.Close()
End Sub
End Module

控制輸出

串行化過程生成標準的XML文件,數據成員轉換為XML元素。不過,并非所有的數據成員都變成元素,可以通過在類代碼中添加一些標記來控制輸出的XML文件。這樣,數據成員可以變換為XML屬性而非元素,也可以簡單的被忽略掉。下面的例子是一段經過修改后的book類VB.NET代碼。

Public Class Book
Public AuthorObject As Author
Public Title As String
<System.Xml.Serialization.XmlAttribute()> _
Public ISBN As String
<System.Xml.Serialization.XmlIgnoreAttribute()> _
Public RetailPrice As Double
Public Publisher As String
End Class

這段代碼告訴系統(tǒng)在生成XML文件時把類成員ISBN作為XML屬性,同時忽略掉RetailPrice成員。這種變化可以在生成的XML文件中可以看出:

<?xml version="1.0" encoding="utf-8"?>
<Book xmlns:xsd="http://www.w3.org/2001/XMLSchema"
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ISBN="1884777767 ">
<AuthorObject>
<FirstName>Tony</FirstName>
<LastName>Patton</LastName>
<Gender>Male</Gender>
<AddressObject>
<Address1>1 Main Street</Address1>
<City>Anywhere</City>
<State>KY</State>
<Zip>40000</Zip>
<Country>USA</Country>
</AddressObject>
</AuthorObject>
<Title>Practical LotusScript</Title>
<Publisher>Manning Publications</Publisher>
</Book>

以下是相應的C# 代碼:

public class Book {
public Book() { }
public string Title;
public Author AuthorObject;
[System.Xml.Serialization.XmlAttribute()]
public string ISBN;
[System.Xml.Serialization.XmlIgnoreAttribute()]
public double RetailPrice;
public string Publisher;
}

上面僅是稍微提了兩種標記符號。請查閱.NET文檔以獲得完整的標記符號。

非串行化
非串行化數據通過調用XmlSerializer類的Deserialize方法可以方便地實現。以下的VB.NET程序片斷完成上文中XML文檔的非串行化:

Dim BookObject As New Book
Dim ser As New XmlSerializer(GetType(Book))
Dim fs As New System.IO.FileStream("booktest.xml", FileMode.Open)
Dim reader As New System.XML.XmlTextReader(fs)
BookObject = CType(ser.Deserialize(reader), Book)
該程序把結果數據放入內存?zhèn)溆?。下面是等價的C# 代碼:
XmlSerializer ser = new XmlSerializer(typeof(Book));
System.IO.FileStreamfs = new System.IO.FileStream("booktest.xml",
FileMode.Open);
System.Xml.XmlTextReader reader = new System.Xml.XmlTextReader(fs);
Book BookObject = (Book)(ser.Deserialize(reader));

以上是“如何利用XMLSerializer將對象串行化到XML”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注創(chuàng)新互聯行業(yè)資訊頻道!

標題名稱:如何利用XMLSerializer將對象串行化到XML
本文網址:http://aaarwkj.com/article4/ijheoe.html

成都網站建設公司_創(chuàng)新互聯,為您提供標簽優(yōu)化、網站建設域名注冊、企業(yè)網站制作、網站內鏈、建站公司

廣告

聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯

成都定制網站網頁設計
国产丝袜肉丝在线播放| 亚洲欧美国产日韩天堂区| 日本加勒比高清在线播放| 91日本在线免费观看视频| 国产精品大片一区二区三区四区| 免费精品99久久久国产| 精品爆白浆一区二区三区| 老熟女露脸吞精一二三四区| 97视频在线中文字幕| 激情内射日本一区二区三区 | 97视频在线观看免费| 九九热最新视频免费看| 综合激情丁香久久狠狠| 男人的天堂av免费看看| 东京热男人的av天堂| 久久精品国产亚洲av高清观看| 精品国内日本一区二区| 日韩三级在线观看av| 国产成人一区二区三区综合区| 黄片视频免费在线观看播放| 亚洲国产av永久精品成人| 综合久久精品亚洲天堂| 国产乱码免费一区二区三区| 在线播放精品免费不卡| 久久精品亚洲欧美激情| 欧美一区日韩二区在线| 亚洲国产中文一区二区久久| 国产三级av高清一区二区| 国产欧美日本精品视频| 视频播放一区二区三区毛片| 亚洲成熟中老妇女视频| 91蜜臀视频在线播放| 欧美成人精品欧美一级乱| 男女啪啪国产精品视频| 国产女主播在线观看视频| 精品一区二区三区在线观看国产| 日韩高清亚洲一区二区| 亚洲综合av一区二区| 开心五月六月婷婷在线| 国产高清在线a视频大全| 99久久婷婷免费国产综合精品 |