婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > 利用XMLSerializer將對象串行化到XML

利用XMLSerializer將對象串行化到XML

熱門標簽:隨州外呼調研系統 高德地圖地圖標注服務中心 r語言數據可視化地圖標注 微信地圖標注合并了 東營電銷 本地電話機器人 400電話辦理包年 南寧網絡外呼系統運營商 如何修改多個百度地圖標注

    微軟已經意識到串行化數據的重要性,因此在.NET框架中包含了命名空間System.Runtime.Serialization和System.Xml.Serialization以提供串行化功能,為用戶自己編寫串行化方法提供了一個框架。System.Xml.Serialization命名空間提供了將一個對象串行化為XML格式的基本方法。下面我們來看看如何使用這種方法。

XML的魅力

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

串行化的目的是數據存儲和數據轉換。數據存儲指的是在用戶會話時保存數據。當應用程序關閉時,數據被保存(串行化),而當用戶回來時,數據又被重新加載(非串行化)。數據轉換指將數據變換成能被另一個系統識別的格式。使用串行化和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();
} } }

上面的代碼把三個對象變為一個對象,因此在串行化過程中產生一個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>

注意串行化過程也能處理對象數據的嵌套。數據被轉換成可識別的格式,方便了數據重載(非串行化)以及向另一個系統的數據傳輸。在數據傳輸過程時,接收方系統需要知道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

這段代碼告訴系統在生成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)

該程序把結果數據放入內存備用。下面是等價的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));


---------------------------------------------------
作者簡介:Tony Patton是一名專業應用程序開發人員,知識面廣泛,獲得了Java、 VB、 Lotus和XML認證。

您可能感興趣的文章:
  • jQuery-serialize()輸出序列化form表單值的方法
  • 非常好用的兩個PHP函數 serialize()和unserialize()
  • 與jquery serializeArray()一起使用的函數,主要來方便提交表單
  • PHP中json_encode、json_decode與serialize、unserialize的性能測試分析
  • jQuery ajax serialize()方法的使用以及常見問題解決

標簽:益陽 西雙版納 寧夏 果洛 拉薩 德州 黃石 宿遷

巨人網絡通訊聲明:本文標題《利用XMLSerializer將對象串行化到XML》,本文關鍵詞  利用,XMLSerializer,將,對象,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《利用XMLSerializer將對象串行化到XML》相關的同類信息!
  • 本頁收集關于利用XMLSerializer將對象串行化到XML的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    亚洲综合丝袜美腿| 欧美一区中文字幕| 亚洲欧美影音先锋| 在线看不卡av| 不卡欧美aaaaa| 日本亚洲免费观看| 亚洲妇女屁股眼交7| 亚洲国产精品黑人久久久| 色美美综合视频| 国产精品亚洲综合一区在线观看| 亚洲一卡二卡三卡四卡无卡久久 | 日韩欧美在线一区二区三区| 91在线码无精品| 久久激情综合网| 亚洲在线观看免费视频| 国产精品视频第一区| 欧美一区二区在线视频| 欧美日韩aaa| 欧美日韩一区二区在线视频| 色综合久久中文综合久久97| 粉嫩一区二区三区性色av| 狠狠色综合播放一区二区| 韩国女主播一区二区三区| 精品一区二区免费看| 国产美女精品人人做人人爽| 国产九色精品成人porny| 国产在线乱码一区二区三区| 国产精品综合久久| 成人精品国产免费网站| 91丨九色porny丨蝌蚪| 欧美三级视频在线播放| 欧美片网站yy| 日韩欧美区一区二| 久久网站最新地址| 欧美极品少妇xxxxⅹ高跟鞋| 亚洲欧美日韩电影| 亚洲aⅴ怡春院| 久久66热偷产精品| 国产成人免费网站| 色综合久久久网| 制服丝袜一区二区三区| 精品久久久久99| 一色屋精品亚洲香蕉网站| 亚洲免费三区一区二区| 日韩黄色一级片| 国产成人精品三级麻豆| 一道本成人在线| 欧美一区二区私人影院日本| 中文在线一区二区| 首页国产欧美久久| k8久久久一区二区三区| 91福利国产精品| 久久亚洲精精品中文字幕早川悠里| 日本一区二区在线不卡| 五月天精品一区二区三区| 黄色日韩网站视频| 欧美日精品一区视频| 日韩一级片网站| 中文字幕一区二| 日本系列欧美系列| 91蜜桃免费观看视频| 日韩三级中文字幕| 国产精品福利一区二区三区| 日韩av电影天堂| 成人av网在线| 久久亚洲捆绑美女| 午夜电影久久久| 色综合中文字幕| 精品国产露脸精彩对白| 亚洲午夜一二三区视频| 国产成人久久精品77777最新版本| 在线观看日产精品| 国产精品久久久久久久久免费桃花| 亚洲国产色一区| 99re热视频精品| 久久品道一品道久久精品| 天天综合网天天综合色| 99在线视频精品| 久久久精品中文字幕麻豆发布| 亚洲国产一区二区在线播放| 成人一级视频在线观看| 日韩欧美国产麻豆| 伊人色综合久久天天人手人婷| 日韩高清在线不卡| 99这里只有精品| 国产精品高潮久久久久无| 麻豆成人综合网| 精品视频999| 亚洲激情综合网| 91在线无精精品入口| 中文字幕一区二区视频| 波多野结衣欧美| 亚洲素人一区二区| 播五月开心婷婷综合| 一区在线播放视频| 成人18精品视频| 亚洲人成网站精品片在线观看| 国产在线播放一区| 国产欧美精品日韩区二区麻豆天美| 日韩不卡手机在线v区| 欧美一级生活片| 日本人妖一区二区| 欧洲亚洲精品在线| 亚洲狠狠爱一区二区三区| 欧美久久久久久久久| 亚洲精品中文在线影院| 色诱亚洲精品久久久久久| 亚洲激情图片小说视频| 欧美人xxxx| 久久精品国产精品亚洲综合| 欧美一区二区网站| 国产成a人无v码亚洲福利| 国产日韩欧美综合一区| 国产一区二区三区综合| 国产不卡视频在线观看| 在线观看网站黄不卡| 久久综合网色—综合色88| 亚洲国产人成综合网站| 精品国产免费人成电影在线观看四季| 久久精品国产77777蜜臀| 亚洲人123区| 欧美放荡的少妇| 成人ar影院免费观看视频| 亚洲一区二区三区四区在线观看| 91美女片黄在线| 美女在线视频一区| 2021久久国产精品不只是精品| 国产一区 二区| 欧美极品另类videosde| 欧美精品成人一区二区三区四区| 99精品欧美一区二区三区综合在线| 精品一区二区三区影院在线午夜| 五月天激情综合网| 日本欧美一区二区三区| 一区二区三区四区亚洲| 国产精品乱子久久久久| 久久久久国产精品人| 久久精品国产亚洲aⅴ| 亚洲三级免费观看| 亚洲美女淫视频| 亚洲午夜久久久久久久久电影网| 成人教育av在线| 国产精品99久久久久久有的能看| 国产精品资源在线| 在线观看免费亚洲| 欧美二区三区91| 国产婷婷精品av在线| 亚洲女同ⅹxx女同tv| 亚洲成人av福利| 国产成人精品一区二区三区四区| 日韩欧美国产午夜精品| 亚洲mv在线观看| 国产98色在线|日韩| 不卡av免费在线观看| 精品美女被调教视频大全网站| 国产婷婷色一区二区三区| 亚洲欧美日本在线| 免费成人av在线| 91免费版在线| 欧美成人综合网站| 中文字幕av一区二区三区高| 一本大道综合伊人精品热热| 9191精品国产综合久久久久久| 亚洲少妇中出一区| 国内外成人在线| 国产精品18久久久久久久网站| 在线观看欧美精品| 亚洲欧美日韩国产手机在线 | 国产麻豆成人传媒免费观看| 久久亚洲影视婷婷| 精品国一区二区三区| 婷婷久久综合九色综合绿巨人| 国产在线不卡一区| 精品捆绑美女sm三区| 精品亚洲porn| 国产精品色一区二区三区| 精品一区二区三区在线播放| 7777女厕盗摄久久久| 免费欧美高清视频| 在线观看亚洲精品视频| 亚洲一区二区三区中文字幕| 色婷婷亚洲精品| 成人午夜视频在线观看| 久久精品视频一区| 不卡一二三区首页| 亚洲国产成人av好男人在线观看| 色成人在线视频| 久久se这里有精品| 中文字幕一区二区日韩精品绯色| 丝袜美腿高跟呻吟高潮一区| 精品久久久久久久久久久院品网| 捆绑紧缚一区二区三区视频| 国产精品毛片高清在线完整版| 91在线精品一区二区| 日日欢夜夜爽一区| 日韩激情av在线| 成人午夜激情在线| 国产91精品欧美| 久久99久久精品| 日韩福利视频导航|