• C# XmlSerializer将对象序列化以及反序列化(Sqlite数据库)


    获取不同数据库表信息将筛选出来的信息序列化以及反序列化

    相应类结构:

    Class Tables:

     1     [Serializable]
     2     [XmlRoot("Table")]
     3     public class Tables
     4     {
     5         public Tables()
     6         {
     7             Items = new List<ColumnsItems>();
     8         }
     9      
    10         /// <summary>
    11         /// 新表名称
    12         /// </summary>
    13         [XmlElementAttribute("NewTableName")]
    14         public string NewTableName { get; set; }
    15 
    16         /// <summary>
    17         /// 旧表名称
    18         /// </summary>
    19         [XmlElementAttribute("OldTableName")]
    20         public string OldTableName { get; set; }
    21 
    22         [XmlElementAttribute("Field")]      
    23         public List<ColumnsItems> Items { get; set; }
    24 
    25     }
    View Code

    Class ColumnsItems:

     1     [Serializable]
     2     [XmlRoot("Field")]
     3     public class ColumnsItems
     4     {     
     5         /// <summary>
     6         /// 新表字段
     7         /// </summary>
     8         [XmlElementAttribute("NewColumn")]
     9         public string NewColumn { get; set; }
    10 
    11         /// <summary>
    12         /// 旧表字段
    13         /// </summary>
    14         [XmlElementAttribute("OldColumn")]
    15         public string OldColumn { get; set; }
    16     }
    View Code

    Class createXml:

     1     [Serializable]
     2     [XmlRoot("Tables")]
     3     public class createXml
     4     {
     5         public createXml()
     6         {
     7             setTable = new List<Tables>();
     8         }
     9         [XmlElementAttribute("Table")]
    10         public List<Tables> setTable { get; set; }
    11     }
    View Code

    对比表格序列化:

     1         #region 将对比表格序列化
     2         /// <summary>
     3         /// 保存信息事件,将表中数据对应关系读取到XML文件中
     4         /// </summary>
     5         /// <param name="sender"></param>
     6         /// <param name="e"></param>
     7         private void saveInfo_Click(object sender, EventArgs e)
     8         {
     9             XmlDocument xd = new XmlDocument();
    10 
    11             // 序列化赋值对象
    12             List<Tables> allTable = new List<Tables>();
    13             //Tables getTable = new Tables();
    14             //ColumnsItems columnItem = new ColumnsItems();
    15         
    16             // 读取字段信息
    17             int i = dataGridView2.RowCount-1;
    18             for (int j = 0; j < i;j++)
    19             {
    20                 ////
    21                 Tables getTable = new Tables();
    22                 ColumnsItems columnItem = new ColumnsItems();
    23                 ///
    24                 if (dataGridView2.Rows[j].Cells[0].Value.ToString() != null)
    25                 {
    26                     getTable.NewTableName = dataGridView2.Rows[j].Cells[0].Value.ToString();
    27                 }
    28                 if (dataGridView2.Rows[j].Cells[1].Value != null)
    29                 {
    30                     columnItem.NewColumn = dataGridView2.Rows[j].Cells[1].Value.ToString();
    31                 }
    32                 if (dataGridView2.Rows[j].Cells[2].Value != null)
    33                 {
    34                     getTable.OldTableName = dataGridView2.Rows[j].Cells[2].Value.ToString();
    35                 }
    36                 if (dataGridView2.Rows[j].Cells[3].Value != null)
    37                 {
    38                     columnItem.OldColumn = dataGridView2.Rows[j].Cells[3].Value.ToString();
    39                 }
    40                 if (columnItem != null)
    41                 { 
    42                     getTable.Items.Add(columnItem);
    43                     while (dataGridView2.Rows[j].Cells[0].Value == dataGridView2.Rows[j + 1].Cells[0].Value && dataGridView2.Rows[j].Cells[2].Value == dataGridView2.Rows[j+1].Cells[2].Value)
    44                     {
    45                         ColumnsItems itemTemp = new ColumnsItems();
    46                         if (dataGridView2.Rows[j+1].Cells[1].Value != null)
    47                         {
    48                             itemTemp.NewColumn = dataGridView2.Rows[j + 1].Cells[1].Value.ToString();
    49                         }
    50                         if (dataGridView2.Rows[j+1].Cells[0].Value != null)
    51                         {
    52                             itemTemp.OldColumn = dataGridView2.Rows[j + 1].Cells[3].Value.ToString();
    53                         }
    54                         getTable.Items.Add(itemTemp);
    55                         j++;
    56                         if (j >= i)
    57                         {
    58                             break;
    59                         }
    60                     }
    61                 }
    62                allTable.Add(getTable);                         
    63             }
    64             createXml setXml = new createXml();
    65             setXml.setTable = allTable;
    66             using(StringWriter wr = new StringWriter())
    67             {
    68                 XmlSerializer createXml = new                     XmlSerializer(typeof(createXml));
    69                 createXml.Serialize(wr,setXml);
    70                 xd.LoadXml(wr.ToString());
    71                 xd.Save("c:\1.xml");
    72             }     
    73         }
    74         #endregion       
    View Code

    反序列化函数:

     1        #region 反序列化函数
     2         /// <summary>
     3         /// 反序列化函数
     4         /// </summary>
     5         /// <param name="xmlPath"></param>
     6         /// <returns></returns>
     7         public createXml Deserialize(string xmlPath)
     8         {
     9             XmlDocument xmlDoc = new XmlDocument();
    10             xmlDoc.Load(xmlPath);
    11             try
    12             {
    13                 using (StringReader sr = new StringReader(xmlDoc.OuterXml))
    14                 {
    15                     XmlSerializer xmldes = new XmlSerializer(typeof(createXml));
    16                     createXml getObjXml = (createXml)xmldes.Deserialize(sr);
    17                     return getObjXml;
    18                 }
    19             }
    20             catch (Exception)
    21             {                
    22                 throw;
    23             }                       
    24         }
    25         #endregion
    View Code

    效果图片:

  • 相关阅读:
    ebs R12 支持IE11
    reloc: Permission denied
    3.23考试小记
    3.21考试小记
    3.20考试小记
    3.17考试小记
    3.15考试小记
    3.13考试小记
    3.12考试小记
    3.10考试小记
  • 原文地址:https://www.cnblogs.com/IamJiangXiaoKun/p/5822147.html
Copyright © 2020-2023  润新知