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 ...
随机推荐
- Linux怎样访问Windows共享文件和文件夹
常常使用Windows的人可能会发现,Windows计算机之前共享资料非常方便,但是有时候想玩玩Linux的时候,如Fedora.Ubuntu.CentOS等,该怎样才能访问Windows计算机上的文 ...
- sgu176 Flow Construction【有源汇有上下界最小流】
同样是模板题. 首先将有源汇转换为无源汇,假设原来的源汇为st,我们加入的源汇为ST,那么我们应该从t到s连一条流量为+∞的边,使原来的st满足收支平衡,退化为普通节点. 分离必要边和其他边,从S到T ...
- 程序员需要有多懒 ?- cocos2d-x 数学函数、常用宏粗整理 - by Glede
最近我们的cocos2d-x游戏项目已经进入了正式开发的阶段了,几个dev都辛苦码代码.cocos2d-x还是一套比较方便的api的,什么action啊.director啊.ccpoint啊都蛮便捷的 ...
- magento中文语言包的使用
magento中文语言包的使用,我们在百度上随便就能找到一大堆. 由于本人今天是第一次使用magento,找到目录magento/app/locale 并且用语言包中的locale文件夹替换掉mag ...
- Win10 的虛擬桌面
Win10 的虛擬桌面我覺得蠻多餘的,平常很少用,除非是像以前的 "切換老闆鍵" ,老闆來了,你不想讓他知道你在幹嘛,趕快切換另外一個桌面. 切換工作視窗:Alt + Tab 叫出 ...
- DDD设计一个电商网站
DDD设计一个电商网站(十一)-- 最后的准备 阅读目录 前言 准备 实现 结语 一.前言 最近实在太忙,上周停更了一周.按流程一步一步走到现在,到达了整个下单流程的最后一公里--结算页的处理. ...
- 写过的一些shell脚本总结
每天晚上自动检查更新 #!/bin/sh #auto gamedown2 version DATE=`/bin/date +%m%d` COUNT=`curl 'http://11.1.1.1/ind ...
- pipe管道
回顾: 进程间通信方式: 信号,管道 消息队列,共享内存,信号量 sokcet 信号: 本质就是软中断 signal(信号,函数指针); void func(int); kill(pid,signo) ...
- webpack之代码分离
https://robertknight.github.io/posts/webpack-dll-plugins/ webpack一般会把一个文件里import/require的文件都会打包在一起,最 ...
- "类型初始值设定项引发异常"
问题出现的原因:在对类中的字段或属性直接赋值的时候出现异常而造成的这个异常. 例如: class MyClass { public static string ConnectionString = G ...