class XmlHelp
{
#region 调用
/// <summary>
/// xml添加
/// </summary>
/// <param name="filename"></param>
/// <param name="people"></param>
public void XmlAdd(string filename, List<People> pList)
{
try
{
List<People> peoples = XmlDeSerializer(filename);
foreach (var item in pList)
{
People people = new People();
people.Name = string.IsNullOrEmpty(item.Name) ? "" : item.Name;
people.Id = string.IsNullOrEmpty(item.Id) ? "" : item.Id;
people.Age = string.IsNullOrEmpty(item.Age) ? "" : item.Age;
people.Sex = string.IsNullOrEmpty(item.Sex) ? "" : item.Sex;
peoples.Add(people);
}
XmlSerializer x = new XmlSerializer(typeof(List<People>));
TextWriter writer = new StreamWriter(filename);
x.Serialize(writer, peoples);
writer.Dispose();
}
catch (Exception ex)
{ }
}
/// <summary>
/// xml编辑
/// </summary>
/// <param name="filename"></param>
/// <param name="people"></param>
public void XmlEdit(string filename, List<People> pList, int index)
{
try
{
XmlDelete("User", index);
List<People> peoples = XmlDeSerializer(filename);
foreach (var item in pList)
{
People people = new People();
people.Name = string.IsNullOrEmpty(item.Name) ? "" : item.Name;
people.Id = string.IsNullOrEmpty(item.Id) ? "" : item.Id;
people.Age = string.IsNullOrEmpty(item.Age) ? "" : item.Age;
people.Sex = string.IsNullOrEmpty(item.Sex) ? "" : item.Sex;
peoples.Insert(index, people);
}
XmlSerializer x = new XmlSerializer(typeof(List<People>));
TextWriter writer = new StreamWriter(filename);
x.Serialize(writer, peoples);
writer.Dispose();
}
catch (Exception ex)
{ }
}
/// <summary>
/// 删除列表
/// </summary>
/// <param name="filename"></param>
/// <param name="pList"></param>
public void XmlDelete(string filename, int index = 0)
{
try
{
List<People> peoples = XmlDeSerializer(filename);
peoples.RemoveAt(index);
XmlSerializer x = new XmlSerializer(typeof(List<People>));
TextWriter writer = new StreamWriter(filename);
x.Serialize(writer, peoples);
writer.Dispose();
}
catch (Exception ex)
{ }
}
/// <summary>
/// 显示列表
/// </summary>
/// <param name="filename"></param>
/// <param name="pList"></param>
public List<People> XmlDeSerializer(string filename)
{
try
{
var mySerializer = new XmlSerializer(typeof(List<People>));
var myFileStream = new FileStream(filename, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
if (myFileStream.Length > 0)
{
var myObject = (List<People>)mySerializer.Deserialize(myFileStream);
return myObject;
} myFileStream.Dispose();
return new List<People>();
}
catch (Exception ex)
{
return new List<People>();
}
}#endregion
}

可以创建一个类直接复制上方的代码,然后将people换成一个新类,并将people中的成员替换

 XmlHelp xmlHelp = new XmlHelp();
private void InfoListView_SelectedIndexChanged(object sender, EventArgs e)
{
if (InfoListView.SelectedItems.Count > 0)
{
this.NameTxt.Text = InfoListView.SelectedItems[0].SubItems[0].Text;
this.SexTxt.Text = InfoListView.SelectedItems[0].SubItems[1].Text;
this.AgeTxt.Text = InfoListView.SelectedItems[0].SubItems[2].Text;
this.IdTxt.Text = InfoListView.SelectedItems[0].SubItems[3].Text;
}
} private void DeleteBtn_Click(object sender, EventArgs e)
{
try
{
if (InfoListView.SelectedItems.Count > 0)
{
var index = InfoListView.SelectedItems[0].Index;
xmlHelp.XmlDelete("User", index);
ListLoad();
TextClear();
MessageBox.Show("删除成功");
}
else
{
MessageBox.Show("请选择想要删除的数据");
}
}
catch
{
MessageBox.Show("出现错误");
}
} private void UpdateBtn_Click(object sender, EventArgs e)
{
try
{
if (InfoListView.SelectedItems.Count > 0)
{
var index = InfoListView.SelectedItems[0].Index;
People people = new People();
people.Name = NameTxt.Text;
people.Id = IdTxt.Text;
people.Age = AgeTxt.Text;
people.Sex = SexTxt.Text;
var peoples = new List<People>();
peoples.Add(people);
xmlHelp.XmlEdit("User", peoples, index);
ListLoad();
TextClear();
MessageBox.Show("更新成功");
}
else
{
MessageBox.Show("请选择想要修改的数据");
}
}
catch
{
MessageBox.Show("出现错误");
} } private void AddBtn_Click(object sender, EventArgs e)
{
try
{
People people = new People();
people.Name = NameTxt.Text;
people.Id = IdTxt.Text;
people.Age = AgeTxt.Text;
people.Sex = SexTxt.Text;
var peoples = new List<People>();
peoples.Add(people);
xmlHelp.XmlAdd("User", peoples);
ListLoad();
TextClear();
MessageBox.Show("添加成功");
}
catch
{
MessageBox.Show("出现错误");
}
} private void XMLFrm_Load(object sender, EventArgs e)
{
ListLoad();
} public void ListLoad()
{
try
{
this.InfoListView.Clear();
var pList = xmlHelp.XmlDeSerializer("User");
this.InfoListView.View = View.Details;
this.InfoListView.Columns.Add("编号", 100, HorizontalAlignment.Left);
this.InfoListView.Columns.Add("姓名", 100, HorizontalAlignment.Left);
this.InfoListView.Columns.Add("性别", 100, HorizontalAlignment.Left);
this.InfoListView.Columns.Add("年龄", 100, HorizontalAlignment.Left); foreach (var item in pList)
{
ListViewItem lvi = new ListViewItem(item.Id);
lvi.SubItems.Add(item.Name);
lvi.SubItems.Add(item.Sex);
lvi.SubItems.Add(item.Age);
this.InfoListView.Items.Add(lvi);
}
}
catch
{
MessageBox.Show("出现错误");
}
}
void TextClear()
{
this.NameTxt.Text = "";
this.SexTxt.Text = "";
this.AgeTxt.Text = "";
this.IdTxt.Text = "";
}

窗体的cs中的内容,分别是删除,修改,添加,加载在表格和清除text中的内容。

2021-3-9 xml序列化和反序列化的更多相关文章

  1. XML 序列化与反序列化

    XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...

  2. XmlSerializer 对象的Xml序列化和反序列化

    http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...

  3. C#的XML序列化及反序列化

    webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...

  4. .NET XML序列化与反序列化

    闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...

  5. XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间.   为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...

  6. c# XML序列化与反序列化

    c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...

  7. Xml序列化、反序列化帮助类

    之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...

  8. Windows phone 之XML序列化与反序列化

    为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...

  9. C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化

    这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...

  10. C#实现接口xml序列化与反序列化

    C#实现接口xml序列化与反序列化   C#中接口无法被xml序列化,提示不支持.百度和bing也搜不到,只好自己动手写了 原理上肯定支持,.Net自己的xml序列化有一个IXmlSerializab ...

随机推荐

  1. json解析异常显示

    解决方案 1.取消FastJson的循环引用的检查:JSONObject.toJSONString(guardVoList,SerializerFeature.DisableCircularRefer ...

  2. Python 持久化-文件

    文件 长久保存信息的一种数据信息集合 常用操作 打开关闭(文件一旦打开,需要关闭操作) 读写内容 查找 open函数 open函数负责打开文件,带有很多参数 第一个参数: 必须有,文件的路径和名称 m ...

  3. (亲自实践)解决安装weditor报错UnicodeDecodeError: ‘gbk‘ codec can‘t decode byte 0xad in position 825

    升级weditor时,报错:UnicodeDecodeError: 'gbk' codec can't decode byte 0xad in position 825: illegal multib ...

  4. #Python 利用pivot_table,数据透视表进行数据分析

    前面我们分享了,利用python进行数据合并和连接,但是工作中,我们往往需要对数据进一步的聚合或者运算,以求最后的数据结果. 今天我们就来学习一下利用pandas模块,对数据集进行数据透视分析. pi ...

  5. EasyExcel设置单元格边框

    /** * 单元格边框 * @return {@link HorizontalCellStyleStrategy} * @date 2021/10/26 13:22 * @author <a h ...

  6. List 集合手动分页的方法总结

    前言 在工作中难免会遇到,将组装的集合数据进行分页处理,现在我将自己手动分页的三种方法进行总结,有不对的地方敬请大家批评指正! 一.数据准备 // 当前页 int pageIndex = 1; // ...

  7. 2023-03-28:有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置。 给你一个整数数组 cuts ,其中 cuts[i] 表示你需要将棍子切开的位置, 你可以按顺序完成切割,也可

    2023-03-28:有一根长度为 n 个单位的木棍,棍上从 0 到 n 标记了若干位置. 给你一个整数数组 cuts ,其中 cuts[i] 表示你需要将棍子切开的位置, 你可以按顺序完成切割,也可 ...

  8. 2022-09-18:以下go语言代码输出什么?A:1;B:15;C:panic index out of range;D:doesn’t compile。 package main import

    2022-09-18:以下go语言代码输出什么?A:1:B:15:C:panic index out of range:D:doesn't compile. package main import ( ...

  9. 2020-12-13:用最少数量的线程,每个线程执行for的空循环,把cpu打满了。如果在for的空循环里添加打印输出函数,会把cpu打满吗?为什么?

    福哥答案2020-12-13:不会.输出会进行io操作,相对于CPU的速度,这是一个非常缓慢的过程,所以CPU会有机会空闲下来.***[评论](https://user.qzone.qq.com/31 ...

  10. Kerberos协议原理

    本文主要介绍Kerberos认证协议的原理以及解决了什么问题 Kerberos是什么 Kerberos是计算机网络世界中的一种身份认证协议. 身份认证是我们日常生活中经常进行的活动,比如我们要去银行取 ...