我们需要在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;/// <summary>
/// Xml序列化与反序列化
/// </summary>
public class XmlUtil
{#region 反序列化/// <summary>/// 反序列化/// </summary>/// <param name="type">类型</param>/// <param name="xml">XML字符串</param>/// <returns></returns>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;}}/// <summary>/// 反序列化/// </summary>/// <param name="type"></param>/// <param name="xml"></param>/// <returns></returns>public static object Deserialize(Type type, Stream stream){XmlSerializer xmldes = new XmlSerializer(type);return xmldes.Deserialize(stream);}#endregion#region 序列化/// <summary>/// 序列化/// </summary>/// <param name="type">类型</param>/// <param name="obj">对象</param>/// <returns></returns>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<Student> list1 = new List<Student>(3);list1.Add(new Student() { Name = "okbase", Age = 10 });
list1.Add(new Student() { Name = "csdn", Age = 15 });
// 序列化
xml = XmlUtil.Serializer(typeof(List<Student>), list1);
Console.Write(xml);

6. Xml转换到List

List<Student> list2 = XmlUtil.Deserialize(typeof(List<Student>), xml) as List<Student>;
foreach (Student stu in list2)
{Console.WriteLine(stu.Name + "," + stu.Age.ToString());
}

https://www.cnblogs.com/hnsongbiao/p/7716932.html

转载于:https://www.cnblogs.com/sharing1986687846/p/10303376.html

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

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

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

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

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

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

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

  4. 简单介绍实体类或对象序列化时,忽略为空属性的操作

    这篇文章主要介绍了实体类或对象序列化时,忽略为空属性的操作,具有很好的参考价值,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教 第一种,在配置文件配置 在application.xml直接 ...

  5. C#实现json、xml与实体类互相转换

    首先是json与实体类之间的的转换,现有如下json数据: {"Content": "中午12点开会","ResultCode": &quo ...

  6. sql时间格式转换yyyymm_XML和实体类之间的转换

    言简意赅: 1.jar包的maven 坐标 <dependency> <groupId>com.thoughtworks.xstreamgroupId> <arti ...

  7. Android JSON数据与实体类之间的相互转化-------GSON的简单用法

    Android JSON数据与实体类之间的相互转化-------GSON的用法 1_Gson的导入 1.1_方法一:直接导入jar包 1.2_方法二:引入依赖 2_json形式的字符串互转实体对象 2 ...

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

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

  9. 跟据xml生成实体类

    跟据XML生成实体类 1.准备 JDK trang.jar https://pan.baidu.com/s/1034OerTsc_c4y-xGNITILQ 提取码:pntu 吧trang.jar放到和 ...

最新文章

  1. vb mysql数据导入到mssql,[请教]怎样把*.txt文本的数据导入sql数据库中?
  2. 【ACM】POJ 1852
  3. Java基础20:Java8新特性终极指南
  4. HIVE 插入中文分区值的问题
  5. 建议收藏:服务器和存储技术知识
  6. (Linux 2.6设备管理机制)kobject和kset
  7. Docker的常规应用手册
  8. testlink(以及服务器)问题定位思路
  9. Android事件分发浅析
  10. Jquery实现定时器实例
  11. OpenCV图像处理(17)—— 各种二值化对比
  12. php支付自定义金额,自定义付款/支付/收费
  13. 解决java.lang.IndexOutOfBoundsException: Index: 0, Size: 0的问题
  14. Qt Moc及信号-槽源代码解析
  15. 用公式编辑器将数学公式转为LaTeX代码
  16. PV270R1K1T1NMMC派克柱塞泵_应用
  17. Java 多线程编程 实验题
  18. 一言不合玩直播 财经直播能成为金融机构的主流吗?
  19. TextMate已破解
  20. 【程序人生】马斯克:我一直有种存在的危机感

热门文章

  1. PHP高手如何修炼?
  2. Bit-Scalable Deep Hashing with Regularized Similarity Learning for Image Retrieval and Person Re-ide
  3. Leetcode 109. 有序链表转换二叉搜索树 解题思路及C++实现
  4. 现在还需要掌握linux文本模式吗?
  5. pip安装ipython_Python -- 关于pip安装Ipython
  6. 16.16. 部分排序
  7. 阻塞队列的应用 || 多线程的条件判断 一定要用while,而不要用 if
  8. Java中Map的entrySet()详解 || Map.Entry的详解
  9. Oracle数据库ORA-12516:“listener could not find available handler with matching protocol stack!“问题解决方法
  10. Windows 技术篇 - 电脑秒速关机设置方法,注册表修改3个缓冲等待时间