2021-3-9 xml序列化和反序列化
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序列化和反序列化的更多相关文章
- XML 序列化与反序列化
XML序列化与反序列化 1.将一个类转化为XML文件 /// <summary> /// 对象序列化成XML文件 /// </summary> /// <param na ...
- XmlSerializer 对象的Xml序列化和反序列化
http://www.cnblogs.com/yukaizhao/archive/2011/07/22/xml-serialization.html 这篇随笔对应的.Net命名空间是System.Xm ...
- C#的XML序列化及反序列化
webservice在工作中用到的很多,基本都是以XML格式问通讯内容,其中最关键的就是XML串的序列化及反序列化. XML的运用中有两种信息传递,一种为XML的请求信息,另一种为返回信息,要运用XM ...
- .NET XML序列化与反序列化
闲着没事,写了两个通用的XML序列化与反序列化的方法. 贴出来当作笔记吧! /// <summary> /// XML序列化 /// </summary> /// <ty ...
- XmlSerializer 对象的Xml序列化和反序列化,XMLROOT别名设置
这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中 ...
- c# XML序列化与反序列化
c# XML序列化与反序列化 原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWrite ...
- Xml序列化、反序列化帮助类
之前从网络上找了一个Xml处理帮助类,并整理了一下,这个帮助类针对Object类型进行序列化和反序列化,而不需要提前定义Xml的结构,把它放在这儿供以后使用 /// <summary> / ...
- Windows phone 之XML序列化与反序列化
为什么要做序列化和反序列化? 一个回答: 我们都知道对象是不能在网络中直接传输的,不过还有补救的办法.XML(Extensible Markup Language)可扩展标记语言,本身就被设计用来存储 ...
- C#操作Xml:XmlSerializer 对象的Xml序列化和反序列化
这篇随笔对应的.Net命名空间是System.Xml.Serialization:文中的示例代码需要引用这个命名空间. 为什么要做序列化和反序列化? .Net程序执行时,对象都驻留在内存中:内存中的对 ...
- C#实现接口xml序列化与反序列化
C#实现接口xml序列化与反序列化 C#中接口无法被xml序列化,提示不支持.百度和bing也搜不到,只好自己动手写了 原理上肯定支持,.Net自己的xml序列化有一个IXmlSerializab ...
随机推荐
- 第139篇:JS数组常用方法(map(),reduce(),foreach())
好家伙,本篇为MDN文档数组方法的学习笔记 Array.prototype.reduce() - JavaScript | MDN (mozilla.org) 数组方法这块的知识缺了,补一下 1. ...
- Unity2021SteamingAssets数量限制导致打包异常解决
最近将项目从Unity2019升级到Unity2021,打包安卓的时候出现异常.查了下资料说是数量超出限制,需要设置不压缩的数量. 1. 使用自定义mainTemplate.gradle 打开编辑,a ...
- 2020-10-19:golang里defer为什么要逆序执行?顺序执行不是更符合人的习惯吗?
福哥答案2020-10-19: 后面定义的函数可能会依赖前面的资源,所以要先执行.如果前面先执行,释放掉这个依赖,那后面的函数就不能找到它的依赖了.***[评论](https://user.qzone ...
- 2022-06-15:薯队长最近在参加了一个活动,主办方提供了N个礼物以供挑选, 每个礼物有一个价值,范围在0 ~ 10^9之间, 薯队长可以从中挑选k个礼物。 返回:其中价值最接近的两件礼物之间相差
2022-06-15:薯队长最近在参加了一个活动,主办方提供了N个礼物以供挑选, 每个礼物有一个价值,范围在0 ~ 10^9之间, 薯队长可以从中挑选k个礼物. 返回:其中价值最接近的两件礼物之间相差 ...
- AcWing 1209. 带分数
题目描述: 分析: 题意就是说给定一个整数N,求给定a,b,c,求a+b/c==N且a,b,c恰好包括0-9的答案的个数,需要注意的是,b/c可能得到的是小数,所以要尽量避免除法,将等式转换为乘法格式 ...
- 反向传播(Backpropagation)相关思想
在前面我们学习了SVM损失函数和softmax损失函数,我们优化权重矩阵w的具体思路便是让损失函数最小化,还记得损失函数的定义吗? 没错,损失函数长这样,其中,Wj为权重矩阵的第j个列向量,xi为第i ...
- python 环境下使用PIP 报错的解决方法
最近做一个小程序项目,使用djangorestframework,安装restframework 出现错误,安装环境Python2.7:出现错误如下: "UnicodeEncodeErro ...
- 【Haxe】(一)VSCode 搭建 Haxe 开发环境
前言 咱换工作啦! 新工作这边需要用到的开发语言是 Haxe,最近大概会写几篇笔记.Haxe 的介绍就不写了,打算记录点有用的学习内容,先从搭建开发环境开始吧! 当前适用版本: VSCode:Curr ...
- CKS 考试题整理 (13)-使用 sysdig 检查容器里里的异常进程
Task 使用运行时检测工具来检测 Pod tomcat 单个容器中频发生成和执行的异常进程 有两种工具可供使用: sysdig falco 注: 这些工具只预装在cluster的工作节点,不在 ma ...
- 使用hashicorp Raft开发分布式服务
使用hashicorp Raft开发高可用服务 开发raft时用到的比较主流的两个库是Etcd Raft 和hashicorp Raft,网上也有一些关于这两个库的讨论.之前分析过etcd Raft, ...