C# XmlSerializer将对象序列化以及反序列化(Sqlite数据库)
获取不同数据库表信息将筛选出来的信息序列化以及反序列化
相应类结构:
Class Tables:
[Serializable]
[XmlRoot("Table")]
public class Tables
{
public Tables()
{
Items = new List<ColumnsItems>();
} /// <summary>
/// 新表名称
/// </summary>
[XmlElementAttribute("NewTableName")]
public string NewTableName { get; set; } /// <summary>
/// 旧表名称
/// </summary>
[XmlElementAttribute("OldTableName")]
public string OldTableName { get; set; } [XmlElementAttribute("Field")]
public List<ColumnsItems> Items { get; set; } }
Class ColumnsItems:
[Serializable]
[XmlRoot("Field")]
public class ColumnsItems
{
/// <summary>
/// 新表字段
/// </summary>
[XmlElementAttribute("NewColumn")]
public string NewColumn { get; set; } /// <summary>
/// 旧表字段
/// </summary>
[XmlElementAttribute("OldColumn")]
public string OldColumn { get; set; }
}
Class createXml:
[Serializable]
[XmlRoot("Tables")]
public class createXml
{
public createXml()
{
setTable = new List<Tables>();
}
[XmlElementAttribute("Table")]
public List<Tables> setTable { get; set; }
}
对比表格序列化:
#region 将对比表格序列化
/// <summary>
/// 保存信息事件,将表中数据对应关系读取到XML文件中
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
private void saveInfo_Click(object sender, EventArgs e)
{
XmlDocument xd = new XmlDocument(); // 序列化赋值对象
List<Tables> allTable = new List<Tables>();
//Tables getTable = new Tables();
//ColumnsItems columnItem = new ColumnsItems(); // 读取字段信息
int i = dataGridView2.RowCount-;
for (int j = ; j < i;j++)
{
////
Tables getTable = new Tables();
ColumnsItems columnItem = new ColumnsItems();
///
if (dataGridView2.Rows[j].Cells[].Value.ToString() != null)
{
getTable.NewTableName = dataGridView2.Rows[j].Cells[].Value.ToString();
}
if (dataGridView2.Rows[j].Cells[].Value != null)
{
columnItem.NewColumn = dataGridView2.Rows[j].Cells[].Value.ToString();
}
if (dataGridView2.Rows[j].Cells[].Value != null)
{
getTable.OldTableName = dataGridView2.Rows[j].Cells[].Value.ToString();
}
if (dataGridView2.Rows[j].Cells[].Value != null)
{
columnItem.OldColumn = dataGridView2.Rows[j].Cells[].Value.ToString();
}
if (columnItem != null)
{
getTable.Items.Add(columnItem);
while (dataGridView2.Rows[j].Cells[].Value == dataGridView2.Rows[j + ].Cells[].Value && dataGridView2.Rows[j].Cells[].Value == dataGridView2.Rows[j+].Cells[].Value)
{
ColumnsItems itemTemp = new ColumnsItems();
if (dataGridView2.Rows[j+].Cells[].Value != null)
{
itemTemp.NewColumn = dataGridView2.Rows[j + ].Cells[].Value.ToString();
}
if (dataGridView2.Rows[j+].Cells[].Value != null)
{
itemTemp.OldColumn = dataGridView2.Rows[j + ].Cells[].Value.ToString();
}
getTable.Items.Add(itemTemp);
j++;
if (j >= i)
{
break;
}
}
}
allTable.Add(getTable);
}
createXml setXml = new createXml();
setXml.setTable = allTable;
using(StringWriter wr = new StringWriter())
{
XmlSerializer createXml = new XmlSerializer(typeof(createXml));
createXml.Serialize(wr,setXml);
xd.LoadXml(wr.ToString());
xd.Save("c:\\1.xml");
}
}
#endregion
反序列化函数:
#region 反序列化函数
/// <summary>
/// 反序列化函数
/// </summary>
/// <param name="xmlPath"></param>
/// <returns></returns>
public createXml Deserialize(string xmlPath)
{
XmlDocument xmlDoc = new XmlDocument();
xmlDoc.Load(xmlPath);
try
{
using (StringReader sr = new StringReader(xmlDoc.OuterXml))
{
XmlSerializer xmldes = new XmlSerializer(typeof(createXml));
createXml getObjXml = (createXml)xmldes.Deserialize(sr);
return getObjXml;
}
}
catch (Exception)
{
throw;
}
}
#endregion
效果图片:
C# XmlSerializer将对象序列化以及反序列化(Sqlite数据库)的更多相关文章
- C#对象序列化与反序列化zz
C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍........................ ...
- C#对象序列化与反序列化
C#对象序列化与反序列化(转载自:http://www.cnblogs.com/LiZhiW/p/3622365.html) 1. 对象序列化的介绍.......................... ...
- 初识序列化和反序列化,使用BinaryFormatter类、ISerializable接口、XmlSerializer类进行序列化和反序列化
序列化是将对象转换成字节流的过程,反序列化是把字节流转换成对象的过程.对象一旦被序列化,就可以把对象状态保存到硬盘的某个位置,甚至还可以通过网络发送给另外一台机器上运行的进程.本篇主要包括: ● 使用 ...
- java 对象序列化与反序列化
Java序列化与反序列化是什么? 为什么需要序列化与反序列化? 如何实现Java序列化与反序列化? 本文围绕这些问题进行了探讨. 1.Java序列化与反序列化 Java序列化是指把Java对象转换为 ...
- Java Io 对象序列化和反序列化
Java 支持将任何对象进行序列化操作,序列化后的对象文件便可通过流进行网络传输. 1. 对象序列化就是将对象转换成字节序列,反之叫对象的反序列化 2. 序列化流ObjectOut ...
- Java对象序列化与反序列化一 JSON
Java对象序列化与反序列化一 JSON 1. 依赖库 jackson-all-1.6.1.jar 2. 代码 public class Student { private String nam ...
- Java之对象序列化和反序列化
一.对象序列化和反序列化存在的意义: 当你创建对象,只要你需要,他就一直存在,但当程序结束,对象就会消失,但是存在某种情况,如何让程序在不允许的状态,仍然保持该对象的信息.并在下次程序运行的时候使用该 ...
- Java 序列化 对象序列化和反序列化
Java 序列化 对象序列化和反序列化 @author ixenos 对象序列化是什么 1.对象序列化就是把一个对象的状态转化成一个字节流. 我们可以把这样的字节流存储为一个文件,作为对这个对象的复制 ...
- Java对象序列化和反序列化的工具方法
import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import ja ...
随机推荐
- WIFI机器人网
WIFI机器人网 WIFI智能小车机器人 外网远程控制WIFI智能小车机器人(WIFI板/703N)
- Xcode6之后创建Pch预编译文件
在Xcode6之前,创建一个新工程xcode会在Supporting files文件夹下面自动创建一个“工程名-Prefix.pch”文件,也是一个头文件,pch头文件的内容能被项目中的其他所有源文件 ...
- java判断是否为汉字
java判断是否为汉字 public static boolean isChinese(String str) { String regEx = "[\u4e00-\u9fa5]&quo ...
- Unity中使用扩展方法解决foreach导致的GC
对于List这种顺序表,我们解决的时候还是可以使用for代替foreach即可.但是对于非顺序表,比如Dictionary或者Set之类,我们可以扩展方法Foreach,ForeachKey和Fore ...
- linux在线预览pdf文件开发思路
准备:swftools,flexpaper 基本思路: 1,将pdf文件转化成swf文件 2,使用flexpaper预览swf文件 主要代码: 1,在linux中安装swftools.官网下载swft ...
- Java的三种代理模式
Java的三种代理模式 1.代理模式 代理(Proxy)是一种设计模式,提供了对目标对象另外的访问方式;即通过代理对象访问目标对象.这样做的好处是:可以在目标对象实现的基础上,增强额外的功能操作,即扩 ...
- 让Flash支持Stage3D
如要需要支持Stage3D,采用GPU来渲染,需要设置wmode="direct",在FB中,对于web和air设置方法不同: 1.web: 需要在web的html模板中,添加参数 ...
- Flex移动皮肤开发(二)
范例文件 mobile-skinning-part2.zip 在这个讨论创建 Flex 移动 skin 的系列的 第 1 部分 中,我讨论了 Flex 团队在 Mobile 主题中所做的性能优化的原理 ...
- Bootstrap相关的网站
http://www.bootcss.com/ http://expo.bootcss.com/ http://www.webresourcesdepot.com/20-beautiful-resou ...
- mysql 无法启动的原因Can't start server: can't create PID file: No space left on device
一大早来到公司,看到了一个噩梦,后台总是登录不上,登录就出错,还以为被黑客入侵了.经过1个小时的排错原因如下: 我的服务器是linux的,mysql的报错日志路径是/var/log/,经过查看日志发现 ...