一、Xml序列化
序列化是将对象转换成易于传输的形式的过程,XML 序列化只将对象的公共字段和属性值序列化为 XML 流。XML 序列化不能转换方法、索引器、私有字段或只读属性(只读集合除外)。
Xml序列化Demo,打开VS2022,创建一个WPF应用程序,创建成功后直接来到MainWindow.xaml.cs
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml;
using System.Xml.Serialization;
namespace XmlSer
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
///
[XmlRoot]
public class TestClass {
private string classname;
private string name;
private int age;
[XmlAttribute]
public string ClassName { get => classname; set => classname = value; }
[XmlElement]
public string Name { get => name; set => name = value; }
[XmlElement]
public int Age { get => age; set => age = value; }
public override string ToString()
{
return base.ToString();
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
TestClass testClass = new TestClass();
testClass.ClassName = "test";
testClass.Name = "xmlTest";
testClass.Age = 18;
FileStream fileStream = File.OpenWrite(@"C:\\programdata\test1.txt");
using (TextWriter write = new StreamWriter(fileStream)) {
XmlSerializer serializers = new XmlSerializer(typeof(TestClass));
serializers.Serialize(write, testClass);
}
}
}
}
成功创建xml文件
Xml反序列化Demo
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows;
using System.Windows.Controls;
using System.Windows.Data;
using System.Windows.Documents;
using System.Windows.Input;
using System.Windows.Media;
using System.Windows.Media.Imaging;
using System.Windows.Navigation;
using System.Windows.Shapes;
using System.Xml.Serialization;
namespace XmlDser
{
/// <summary>
/// Interaction logic for MainWindow.xaml
/// </summary>
[XmlRoot]///定义xml根节点
public class TestClass
{
private string Classname;
private string name;
private int age;
[XmlAttribute]///定义xml属性
public string ClassName { get => Classname; set => Classname = value; }
[XmlElement]///定义xml元素
public string Name { get => name; set => name = value; }
[XmlElement]
public int Age { get => age; set => age = value; }
public override string ToString()
{
return base.ToString();
}
}
public partial class MainWindow : Window
{
public MainWindow()
{
InitializeComponent();
TestClass testClass = new TestClass();
using (var stream = new FileStream(@"C:\\programdata\\test1.txt", FileMode.Open)) {
var serializers = new XmlSerializer(typeof(TestClass));
testClass = serializers.Deserialize(stream) as TestClass;
}
MessageBox.Show(testClass.Name);
}
}
}