手机
当前位置:查字典教程网 >编程开发 >C#教程 >C#实现对象XML序列化的方法
C#实现对象XML序列化的方法
摘要:本文实例讲述了C#实现对象XML序列化的方法。分享给大家供大家参考。具体实现方法如下:复制代码代码如下:usingsystem;usings...

本文实例讲述了C#实现对象XML序列化的方法。分享给大家供大家参考。具体实现方法如下:

复制代码 代码如下:using system;

using system.xml;

using system.xml.serialization;

using system.text;

using system.io;

public class util

{

/// <summary>

/// 对象序列化成 xml string

/// </summary>

public static string xmlserialize<t>(t obj)

{

string xmlstring = string.empty;

xmlserializer xmlserializer = new xmlserializer(typeof(t));

using (memorystream ms = new memorystream())

{

xmlserializer.serialize(ms, obj);

xmlstring = encoding.utf8.getstring(ms.toarray());

}

return xmlstring;

}

/// <summary>

/// xml string 反序列化成对象

/// </summary>

public static t xmldeserialize<t>(string xmlstring)

{

t t = default(t);

xmlserializer xmlserializer = new xmlserializer(typeof(t));

using (stream xmlstream = new memorystream(encoding.utf8.getbytes(xmlstring)))

{

using (xmlreader xmlreader = xmlreader.create(xmlstream))

{

object obj = xmlserializer.deserialize(xmlreader);

t = (t)obj;

}

}

return t;

}

}

stringwriter,xmlserializer将对象、对象集合序列化为xml格式的字符串, 同时描述如何进行反序列化.

c# 序列化 xmlserializer,binaryformatter,soapformatter

复制代码 代码如下://radio.cs

using system;

using system.collections.generic;

using system.text;

namespace simpleserialize

{

[serializable]

public class radio

{

public bool hastweeters;

public bool hassubwoofers;

public double[] stationpresets;

[nonserialized]

public string radioid = "xf-552rr6";

}

}

//cars.cs

using system;

using system.collections.generic;

using system.text;

using system.xml.serialization;

namespace simpleserialize

{

[serializable]

public class car

{

public radio theradio = new radio();

public bool ishatchback;

}

[serializable, xmlroot(namespace = "http://www.intertech.com")]

public class jamesbondcar : car

{

[xmlattribute]

public bool canfly;

[xmlattribute]

public bool cansubmerge;

public jamesbondcar(bool skyworthy, bool seaworthy)

{

canfly = skyworthy;

cansubmerge = seaworthy;

}

// the xmlserializer demands a default constructor!

public jamesbondcar() { }

}

}

复制代码 代码如下://program.cs

using system;

using system.collections.generic;

using system.text;

using system.io;

// for the formatters.

using system.runtime.serialization.formatters.binary;

using system.runtime.serialization.formatters.soap;

using system.xml.serialization;

namespace simpleserialize

{

class program

{

static void main(string[] args)

{

console.writeline("***** fun with object serialization *****n");

// make a jamesbondcar and set state.

jamesbondcar jbc = new jamesbondcar();

jbc.canfly = true;

jbc.cansubmerge = false;

jbc.theradio.stationpresets = new double[] { 89.3, 105.1, 97.1 };

jbc.theradio.hastweeters = true;

// now save / load the car to a specific file.

saveasbinaryformat(jbc, "cardata.dat");

loadfrombinaryfile("cardata.dat");

saveassoapformat(jbc, "cardata.soap");

saveasxmlformat(jbc, "cardata.xml");

savelistofcars();

savelistofcarsasbinary();

console.readline();

}

#region save / load as binary format

static void saveasbinaryformat(object objgraph, string filename)

{

// save object to a file named cardata.dat in binary.

binaryformatter binformat = new binaryformatter();

using (stream fstream = new filestream(filename,

filemode.create, fileaccess.write, fileshare.none))

{

binformat.serialize(fstream, objgraph);

}

console.writeline("=> saved car in binary format!");

}

static void loadfrombinaryfile(string filename)

{

binaryformatter binformat = new binaryformatter();

// read the jamesbondcar from the binary file.

using (stream fstream = file.openread(filename))

{

jamesbondcar carfromdisk =

(jamesbondcar)binformat.deserialize(fstream);

console.writeline("can this car fly", carfromdisk.canfly);

}

}

#endregion

#region save as soap format

// be sure to import system.runtime.serialization.formatters.soap

// and reference system.runtime.serialization.formatters.soap.dll.

static void saveassoapformat(object objgraph, string filename)

{

// save object to a file named cardata.soap in soap format.

soapformatter soapformat = new soapformatter();

using (stream fstream = new filestream(filename,

filemode.create, fileaccess.write, fileshare.none))

{

soapformat.serialize(fstream, objgraph);

}

console.writeline("=> saved car in soap format!");

}

#endregion

#region save as xml format

static void saveasxmlformat(object objgraph, string filename)

{

// save object to a file named cardata.xml in xml format.

xmlserializer xmlformat = new xmlserializer(typeof(jamesbondcar),

new type[] { typeof(radio), typeof(car) });

using (stream fstream = new filestream(filename,

filemode.create, fileaccess.write, fileshare.none))

{

xmlformat.serialize(fstream, objgraph);

}

console.writeline("=> saved car in xml format!");

}

#endregion

#region save collection of cars

static void savelistofcars()

{

// now persist a list<> of jamesbondcars.

list<jamesbondcar> mycars = new list<jamesbondcar>();

mycars.add(new jamesbondcar(true, true));

mycars.add(new jamesbondcar(true, false));

mycars.add(new jamesbondcar(false, true));

mycars.add(new jamesbondcar(false, false));

using (stream fstream = new filestream("carcollection.xml",

filemode.create, fileaccess.write, fileshare.none))

{

xmlserializer xmlformat = new xmlserializer(typeof(list<jamesbondcar>),

new type[] { typeof(jamesbondcar), typeof(car), typeof(radio) });

xmlformat.serialize(fstream, mycars);

}

console.writeline("=> saved list of cars!");

}

static void savelistofcarsasbinary()

{

// save arraylist object (mycars) as binary.

list<jamesbondcar> mycars = new list<jamesbondcar>();

binaryformatter binformat = new binaryformatter();

using (stream fstream = new filestream("allmycars.dat",

filemode.create, fileaccess.write, fileshare.none))

{

binformat.serialize(fstream, mycars);

}

console.writeline("=> saved list of cars in binary!");

}

#endregion

}

}

希望本文所述对大家的C#程序设计有所帮助。

【C#实现对象XML序列化的方法】相关文章:

C#.NET字符串比较中忽略符号的方法

c#实现输出本月的月历

C#中Web.Config加密与解密的方法

使用C#开发Socket通讯的方法

C#几种截取字符串的方法小结

C# 运用params修饰符来实现变长参数传递的方法

C#实现窗体淡入淡出效果的方法总结

C# 获取属性名的方法

自定义实现Json字符串向C#对象转变的方法

深入理解C#实现快捷键(系统热键)响应的方法

精品推荐
分类导航