600字范文,内容丰富有趣,生活中的好帮手!
600字范文 > c语言xml序列化 C# XML和实体类之间相互转换(序列化和反序列化)

c语言xml序列化 C# XML和实体类之间相互转换(序列化和反序列化)

时间:2019-12-10 05:05:56

相关推荐

c语言xml序列化 C# XML和实体类之间相互转换(序列化和反序列化)

我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改。

using System;

using System.Collections.Generic;

using System.Linq;

using System.Text;

using System.IO;

using System.Data;

using System.Xml;

using System.Xml.Serialization;

///

/// Xml序列化与反序列化

///

public class XmlUtil

{

#region 反序列化

///

/// 反序列化

///

/// 类型

/// XML字符串

///

public static object Deserialize(Type type, string xml)

{

try

{

using (StringReader sr = new StringReader(xml))

{

XmlSerializer xmldes = new XmlSerializer(type);

return xmldes.Deserialize(sr);

}

}

catch (Exception e)

{

return null;

}

}

///

/// 反序列化

///

///

///

///

public static object Deserialize(Type type, Stream stream)

{

XmlSerializer xmldes = new XmlSerializer(type);

return xmldes.Deserialize(stream);

}

#endregion

#region 序列化

///

/// 序列化

///

/// 类型

/// 对象

///

public static string Serializer(Type type, object obj)

{

MemoryStream Stream = new MemoryStream();

XmlSerializer xml = new XmlSerializer(type);

try

{

//序列化对象

xml.Serialize(Stream, obj);

}

catch (InvalidOperationException)

{

throw;

}

Stream.Position = 0;

StreamReader sr = new StreamReader(Stream);

string str = sr.ReadToEnd();

sr.Dispose();

Stream.Dispose();

return str;

}

#endregion

}

下面是测试代码:

1. 实体对象转换到Xml

public class Student

{

public string Name { set; get; }

public int Age { set; get; }

}

Student stu1 = new Student() { Name = "okbase", Age = 10 };

string xml = XmlUtil.Serializer(typeof(Student), stu1);

Console.Write(xml);

2. Xml转换到实体对象

Student stu2 = XmlUtil.Deserialize(typeof(Student), xml) as Student;

Console.Write(string.Format("名字:{0},年龄:{1}", stu2.Name, stu2.Age));

3. DataTable转换到Xml

// 生成DataTable对象用于测试

DataTable dt1 = new DataTable("mytable"); // 必须指明DataTable名称

dt1.Columns.Add("Dosage", typeof(int));

dt1.Columns.Add("Drug", typeof(string));

dt1.Columns.Add("Patient", typeof(string));

dt1.Columns.Add("Date", typeof(DateTime));

// 添加行

dt1.Rows.Add(25, "Indocin", "David", DateTime.Now);

dt1.Rows.Add(50, "Enebrel", "Sam", DateTime.Now);

dt1.Rows.Add(10, "Hydralazine", "Christoff", DateTime.Now);

dt1.Rows.Add(21, "Combivent", "Janet", DateTime.Now);

dt1.Rows.Add(100, "Dilantin", "Melanie", DateTime.Now);

// 序列化

xml = XmlUtil.Serializer(typeof(DataTable), dt1);

Console.Write(xml);

4. Xml转换到DataTable

// 反序列化

DataTable dt2 = XmlUtil.Deserialize(typeof(DataTable), xml) as DataTable;

// 输出测试结果

foreach (DataRow dr in dt2.Rows)

{

foreach (DataColumn col in dt2.Columns)

{

Console.Write(dr[col].ToString() + " ");

}

Console.Write("\r\n");

}

5. List转换到Xml

// 生成List对象用于测试

List list1 = new List(3);

list1.Add(new Student() { Name = "okbase", Age = 10 });

list1.Add(new Student() { Name = "csdn", Age = 15 });

// 序列化

xml = XmlUtil.Serializer(typeof(List), list1);

Console.Write(xml);

6. Xml转换到List

List list2 = XmlUtil.Deserialize(typeof(List), xml) as List;

foreach (Student stu in list2)

{

Console.WriteLine(stu.Name + "," + stu.Age.ToString());

}

从代码可以看到,千变万化不离其宗!

c# XML和实体类之间相互转换(序列化和反序列化)[砖]

link:/haobao/archive/62.html by:好饱 我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlU ...

XML和实体类之间相互转换(序列化和反序列化)

我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 ...

用C#实现XML和实体类之间序列化和反序列化相互转换

using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...

java中的xml与实体类之间的映射

实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...

[Unity]C#中 将XML和实体类之间进行相互转换的工具类

using System; using System.Xml; using System.Xml.Serialization; using System.IO; namespace LOTool { ...

利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类

一.利用MyEclipse连接数据库 1. 打开MyEclipse的数据库连接视图 然后在Other中找到"MyEclipse Database"中的DB Browser 2. 在 ...

(转)DATATABLE(DATASET)与实体类之间的互转.

转自:/zzyyll2/archive//07/20/1781649.html dataset和实体类 之间的转换 //dataset转实体类 代 ...

孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化

孤荷凌寒自学python第三十七天python的文件与内存变量之间的序列化与反序列化 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.什么是序列化与反序列化 序列化是指将内存中的数据进行指 ...

随机推荐

快速傅里叶(FFT)的快速深度思考

关于按时间抽取快速傅里叶(FFT)的快速理论深度思考 对于FFT基本理论参考维基百科或百度百科. 首先谈谈FFT的快速何来?大家都知道FFT是对DFT的改进变换而来,那么它究竟怎样改进,它改进的思想在 ...

union内嵌struct用法

// union内嵌struct用法 // 众所周知,union为联合体,struct为结构体.下面根据实例谈谈用法 #include #include & ...

Javascript 原型和原型链

先来了解一下Javascript中的原型:”原型也是一个对象,原型可以用来实现继承...“ 对于 原型,构造函数,以及实例之间的关系:“每个(构造)函数都有一个原型属性,原型对象都包含一个指向构造函数 ...

osgEarth学习笔记(转载)

osgEarth学习笔记1. 通过earth文件创建图层时,可以指定多个影像数据源和多个高程数据源,数据源的顺序决定渲染顺序,在earth文件中处于最前的在渲染时处于最底层渲染:所以如果 ...

AJAX做增删改查详细!

bc"; t.Value = ; Console.Wr ...

H3C ER6300 + 两台 H3C S5120 组网举例

组网需求: 1.H3C ER6300 作出口路由.防火墙及Qos限速等功能(ER6300 配置LAN口 192.168.30.254默认网关) 2.H3C S5120 两台配置相同VLAN10 VLA ...

第5月第8天 jsonmodel

1. @implementation JSONValueTransformer (CustomTransformer) //时间戳转NSDate - (NSDate *)NSDateFromNSStr ...

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。