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;/// <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和实体类之间相互转换(序列化和反序列化)相关推荐
- c语言xml序列化,C# XML和实体类之间相互转换(序列化和反序列化)
我们需要在XML与实体类,DataTable,List之间进行转换,下面是XmlUtil类,该类来自网络并稍加修改. using System; using System.Collections.Ge ...
- c# XML和实体类之间相互转换(序列化和反序列化)
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.I ...
- java xml 实体类_java中的xml与实体类之间的映射
实体类: package xml; import javax.xml.bind.annotation.XmlRootElement; @XmlRootElement public class User ...
- 简单介绍实体类或对象序列化时,忽略为空属性的操作
这篇文章主要介绍了实体类或对象序列化时,忽略为空属性的操作,具有很好的参考价值,希望对大家有所帮助.如有错误或未考虑完全的地方,望不吝赐教 第一种,在配置文件配置 在application.xml直接 ...
- C#实现json、xml与实体类互相转换
首先是json与实体类之间的的转换,现有如下json数据: {"Content": "中午12点开会","ResultCode": &quo ...
- sql时间格式转换yyyymm_XML和实体类之间的转换
言简意赅: 1.jar包的maven 坐标 <dependency> <groupId>com.thoughtworks.xstreamgroupId> <arti ...
- Android JSON数据与实体类之间的相互转化-------GSON的简单用法
Android JSON数据与实体类之间的相互转化-------GSON的用法 1_Gson的导入 1.1_方法一:直接导入jar包 1.2_方法二:引入依赖 2_json形式的字符串互转实体对象 2 ...
- mye连接mysql_利用MyEclipse连接数据库并自动生成基于注解或者XML的实体类
一.利用MyEclipse连接数据库 1. 打开MyEclipse的数据库连接视图 然后在Other中找到"MyEclipse Database"中的DB Browser 2. 在 ...
- 跟据xml生成实体类
跟据XML生成实体类 1.准备 JDK trang.jar https://pan.baidu.com/s/1034OerTsc_c4y-xGNITILQ 提取码:pntu 吧trang.jar放到和 ...
最新文章
- vb mysql数据导入到mssql,[请教]怎样把*.txt文本的数据导入sql数据库中?
- 【ACM】POJ 1852
- Java基础20:Java8新特性终极指南
- HIVE 插入中文分区值的问题
- 建议收藏:服务器和存储技术知识
- (Linux 2.6设备管理机制)kobject和kset
- Docker的常规应用手册
- testlink(以及服务器)问题定位思路
- Android事件分发浅析
- Jquery实现定时器实例
- OpenCV图像处理(17)—— 各种二值化对比
- php支付自定义金额,自定义付款/支付/收费
- 解决java.lang.IndexOutOfBoundsException: Index: 0, Size: 0的问题
- Qt Moc及信号-槽源代码解析
- 用公式编辑器将数学公式转为LaTeX代码
- PV270R1K1T1NMMC派克柱塞泵_应用
- Java 多线程编程 实验题
- 一言不合玩直播 财经直播能成为金融机构的主流吗?
- TextMate已破解
- 【程序人生】马斯克:我一直有种存在的危机感
热门文章
- PHP高手如何修炼?
- Bit-Scalable Deep Hashing with Regularized Similarity Learning for Image Retrieval and Person Re-ide
- Leetcode 109. 有序链表转换二叉搜索树 解题思路及C++实现
- 现在还需要掌握linux文本模式吗?
- pip安装ipython_Python -- 关于pip安装Ipython
- 16.16. 部分排序
- 阻塞队列的应用 || 多线程的条件判断 一定要用while,而不要用 if
- Java中Map的entrySet()详解 || Map.Entry的详解
- Oracle数据库ORA-12516:“listener could not find available handler with matching protocol stack!“问题解决方法
- Windows 技术篇 - 电脑秒速关机设置方法,注册表修改3个缓冲等待时间