Xml序列化和反序列化

2021-07-22 08:05:20 字數 2095 閱讀 5026

1.  xmlserializer 類

該類用一種高度鬆散耦合的方式提供序列化服務。你的類不需要繼承特別的基類,而且它們也不需要實現特別的介面。相反,你只需在你的類或者這些類的公共域以及讀

/寫屬性裡加上自定義的特性。

xmlserializer

通過反射機制讀取這些特性並用它們將你的類和類成員對映到

xml元素和屬性。

2. xmlattributeattribute 類

指定類的公共域或讀

/寫屬性對應

xml檔案的

attribute。例:

[xmlattribute(「type」)] or [xmlattribute(attributename=」type」)]

3. xmlelementattribute類

指定類的公共域或讀

/寫屬性對應

xml檔案的

element。例:

[xmlelement(「maufacturer」)] or [xmlelement(elementname=」manufacturer」)]

4. xmlrootattribute類

xml序列化時,由該特性指定的元素將被序列化成

xml的根元素。

例:[xmlroot(「rootelement」)] or [xmlroot(elementname = 「rootelements」)]

5. xmltextattribute 類

xml序列化時,由該特性指定的元素值將被序列化成

xml元素的值。乙個類只允許擁有乙個該特性類的例項,因為

xml元素只能有乙個值。

6. xmlignoreattribute類

xml序列化時不會序列化該特性指定的元素。

要注意1. 

序列化資料只包含資料本身以及類的結構。不包括型別標識和程式集資訊。

2. 只能序列化公共屬性和字段。如果需要序列化非公共資料,請使用

binaryformatter類而不是

xml

序列化。

3. 類必須有乙個將由

xmlserializer序列化的預設建構函式。

4. 不能序列化方法。

需要引用using system.xml.serialization;這個類

新增測試資料 goods g1 = new

goods();

g1.name = "可樂";

g1.price = 2;

g1.num = 2200;

goods g2 = new

goods();

g2.name = "雪碧";

g2.price = 2;

g2.num = 2200;

list

list = new

list

();list.add(g1);

list.add(g2);

序列化xmlserializer xs = new

xmlserializer(typeof(list

));using (streamwriter sw=file.createtext("goods.xml"))                

xs.serialize(sw, list);

console.readline();

streamwriter 寫入檔案

反序列化

list

list = new

list

();xmlserializer xs = new

xmlserializer(typeof(list

));using (streamreader sr = file.opentext("goods.xml"))

list = xs.deserialize(sr) as

list

;foreach (var item in list)

console.writeline(item.name);

console.readline();

streamreader 讀取

XML序列化和反序列化

閱讀目錄 回到頂部 由於.net framework針對xml提供了很多api,這些api根據不同的使用場景實現了不同層次的封裝,比如,我們可以直接使用xmltextreader xmldocument xpath來取數xml中的資料,也可以使用linq to xml或者反序列化的方法從xml中讀取...

XML序列化和反序列化

在談xml序列化之前,我們先來說說序列化。為什麼要做序列化和反序列化?net程式執行時,物件都駐留在記憶體中 記憶體中的物件如果需要傳遞給其他系統使用 或者在關機時需要儲存下來以便下次再次啟動程式使用就需要序列化和反序列化。序列化名詞解釋 序列化是將物件狀態轉換為可保持或傳輸的格式的過程。與序列化相...

XML序列化和反序列化

不過在上篇中忘了把json序列化和反序列化的另外一種方式寫上去了,這裡做個簡單的補充 json篇 json序列化和反序列化擴充套件方法實現類 using system using system.collections.generic using system.linq using system.te...