XML序列化和反序列化--XmlSerializer
2022/4/11 6:15:36
本文主要是介绍XML序列化和反序列化--XmlSerializer,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
用NET自带的XML序列化工具进行系列化和反序列化;
需要引用的命名空间:
using System.Xml;
using System.Xml.Serialization;
XmlSerializer serializer = new XmlSerializer(typeof(Student)); using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate)) { serializer.Serialize(stream, student); }
对核心代码制作的数据流程图,以便于理解数据流向和工作原理;
serializer.Serialize(stream, student);
窗口设计
测试用学生类
public class Student { private string m_Name; private string m_Sex; private int m_Age; public string Name { get => m_Name; set => m_Name = value; } public string Sex { get => m_Sex; set => m_Sex = value; } public int Age { get => m_Age; set => m_Age = value; } public string Say() { return $"my name is {Name}"; } }
将学生类进行序列化,并保存至XML文件,测试读取XML文件内容
string path = Application.StartupPath + @"\data.xml"; Student student = new Student() { Name = "孙悟空", Sex = "男", Age = 5000 }; /// <summary> /// 序列化,并读取XML /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button1_Click(object sender, EventArgs e) { listBox1.Items.Clear(); XmlSerializer serializer = new XmlSerializer(typeof(Student)); using (FileStream stream = new FileStream(path, FileMode.OpenOrCreate)) { serializer.Serialize(stream, student); } XmlDocument doc = new XmlDocument(); if (File.Exists(path)) doc.Load(path); else return; XmlNode root = doc.DocumentElement; listBox1.Items.Add(root.InnerText); bool b = root.HasChildNodes; listBox1.Items.Add("root.HasChildNodes?"+b); XmlNodeList list= root.ChildNodes; listBox1.Items.Add("子节点个数?" + list.Count); foreach (XmlNode item in list) { listBox1.Items.Add(item.InnerText); } }
点击加载按钮--加载XML文件并进行反序列化
/// <summary> /// 加载XML,反序列化 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> private void button2_Click(object sender, EventArgs e) { if (!File.Exists(path)) return; XmlSerializer serializer = new XmlSerializer(typeof(Student)); using (FileStream stream = new FileStream(path, FileMode.Open)) { Student student2 = serializer.Deserialize(stream) as Student; listBox1.Items.Clear(); listBox1.Items.Add("反序列化数据"); listBox1.Items.Add("生成类型"+student2.ToString()); listBox1.Items.Add(student2.Name); listBox1.Items.Add(student2.Sex); listBox1.Items.Add(student2.Age); listBox1.Items.Add("Say()" + student2.Say()); } }
结果:
这篇关于XML序列化和反序列化--XmlSerializer的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-11-14XMLHTTPRequest教程:初学者必备指南
- 2024-10-10XMLHTTPRequest项目实战:从入门到上手
- 2024-02-26lxml not found please install it
- 2022-09-16使用Druid数据源-开启监控-xml的方式-配置类的方式
- 2022-09-08IDEA中pom.xml配置文件依赖文件版本号报红的最有效解决办法
- 2022-09-05如何更换项目中web.xml的版本
- 2022-09-02使用dom4j xml解析文件数据
- 2022-08-24可扩展标记语言——XML
- 2022-08-23mybatis 配置文件mybatis.xml的加载过程
- 2022-08-162022最新有效 哔哩哔哩Bilibili手机端.m4s文件缓存转.mp4教程 支持每个视频单独一个文件夹 支持转换xml弹幕