C# 序列化和反序列化(xml 文件)
序列化是将对象保存为文本文件或二进制文件;
反序列化则是读取文件信息,还原为对象;
序列化保存为文本内容,主要是 xml 和 json 两种,这里介绍序列化为 xml 文件的方式。
想要序列化,先要在类上添加 [Serializable] 特性标签,如:
[Serializable]
public class Person {
private string test1 = "test1";
protected string test2 = "test2";
public string test3 = "test3";
internal string test4 = "test4";
public int id { get; set; }
public string name { get; set; }
public int age { get; set; } public override string ToString() {
return $"[id={id}, name={name}, age={age}, test1={test1}, test2={test2}, test4={test3}, test4={test4}]";
}
}
C# 中处理 xml 序列化的相关类都在 System.Xml.Serialization 命名空间下,这里通过使用 XmlSerializer 类来实现序列化和反序列化:
public class xml_serializer_manager{
/// <summary>
/// serialize object to xml file.
/// </summary>
/// <param name="path">the path to save the xml file</param>
/// <param name="obj">the object you want to serialize</param>
public void serialize_to_xml(string path, object obj) {
XmlSerializer serializer = new XmlSerializer(obj.GetType());
string content = string.Empty;
//serialize
using (StringWriter writer = new StringWriter()) {
serializer.Serialize(writer, obj);
content = writer.ToString();
}
//save to file
using (StreamWriter stream_writer = new StreamWriter(path)) {
stream_writer.Write(content);
}
}
/// <summary>
/// deserialize xml file to object
/// </summary>
/// <param name="path">the path of the xml file</param>
/// <param name="object_type">the object type you want to deserialize</param>
public object deserialize_from_xml(string path, Type object_type) {
XmlSerializer serializer = new XmlSerializer(object_type);
using (StreamReader reader = new StreamReader(path)) {
return serializer.Deserialize(reader);
}
}
}
使用方法:
序列化:
xml_serializer_manager manager = new xml_serializer_manager();
string path = @"D:\person.xml";
Person p = new Person { id=, name="tommy", age=};
manager.serialize_to_xml(path, p);
结果如下:
生成 person.xml 文件,而且只处理了 public 修饰的属性,其他都不处理

反序列化:
xml_serializer_manager manager = new xml_serializer_manager();
string path = @"D:\person.xml";
Person p = (Person)manager.deserialize_from_xml(path, typeof(Person));
Console.Write(p.ToString());
结果:

C# 序列化和反序列化(xml 文件)的更多相关文章
- 使用XML序列化器生成XML文件和利用pull解析XML文件
首先,指定XML格式,我指定的XML格式如下: <?xml version='1.0' encoding='utf-8' standalone='yes' ?> <message&g ...
- 使用XMl序列化器生成xml文件
生成XML文件 创建几个虚拟的短信对象,存在list中 备份数据通常都是备份至sd卡 使用StringBuffer拼接字符串 把整个xml文件所有节点append到sb对象里 sb.append(&q ...
- JAVA序列化和反序列化XML
package com.lss.utils; import java.beans.XMLDecoder; import java.beans.XMLEncoder; import java.io.Bu ...
- Android 使用xml序列化器生成xml文件
在<Android 生成xml文件>一文中使用流的形式写入xml格式文件,但是存在一定的问题,那就是在短信内容中不能出现<>之类的括号,本文使用xml序列化器来解决 xml序列 ...
- 对类参数的序列化和反序列化XML
/// <summary> /// Xml序列化与反序列化 /// </summary> public class XmlUtil { #region 反序列化 /// < ...
- Java序列化与反序列化,文件操作
参考两篇博客: http://blog.csdn.net/moreevan/article/details/6697777 http://blog.csdn.net/moreevan/article/ ...
- Android -------- 序列化器生成xml文件
- c#如何序列化与反序列化json文件
见网站: http://www.json.org/ 代码如下: /* * Copyright (c) 2013 Calvin Rien * * Based on the JSON parser by ...
- unity xml序列化与反序列化 多平台
换平台确实是一个头疼的问题,本来在pc用.net的json处理数据很是顺手的,但是发布web版本后,发现他不支持.后面找了好几个开源json都不能很好的支持web,或者不能支持List等.于是我就想着 ...
随机推荐
- 快速掌握zabbix配置
有人说zabbix难点在配置,面对很多的配置项,不知道所以然了,其实我觉得这是没掌握好zabbix的学习方法,要掌握了zabbix的学习思路,可以在一个小时内快速掌握zabbix的各种配置,下面我将重 ...
- unix环境高级编程中的err_quit,err_sys用到的知识点
unix环境高级编程中的err_quit,err_sys 环境 os CentOS release 6.7 (Final) gcc 4.4.7 c语言预备知识 标准输入输出文件 在linux系统中一切 ...
- Python3 网络编程和并发编程总结
目录 网络编程 开发架构 OSI七层模型 socket subprocess 粘包问题 socketserver TCP UDP 并发编程 多道技术 并发和并行 进程 僵尸进程和孤儿进程 守护进程 互 ...
- VMware“该虚拟机似乎正在使用中”
问题现象: 在用VMware虚拟机的时候,有时会发现打开虚拟机时提示"该虚拟机似乎正在使用中.如果该虚拟机未在使用,请按"获取所有权(T)"按钮获取它的所有权.否则,请按 ...
- 201871010119-帖佼佼《面向对象程序设计(java)》第四周学习总结
项目 内容 这个作业属于哪个课程 https://www.cnblogs.com/nwnu-daizh/ 这个作业的要求在哪里 https://www.cnblogs.com/nwnu-daizh ...
- 一线大厂Java面试必问的2大类Tomcat调优
一.前言 最近整理了 Tomcat 调优这块,基本上面试必问,于是就花了点时间去搜集一下 Tomcat 调优都调了些什么,先记录一下调优手段,更多详细的原理和实现以后用到时候再来补充记录,下面就来介绍 ...
- java基础篇一
引言 本人系南京一小小学校的大三小小菜鸟,三年来学了很多杂七杂八的,也荒废了大量的时间,马上就要秋招了,之前也看了不少面试题,备选了一些简单的项目,看了不知多少本的几百页厚的各种知识的pdf电子书,发 ...
- ELK 理论小知识
ELK 是现阶段众多企业单位都在使用的一种日志分析系统,它能够方便的为我们收集你想要的日志并且展示出来 ELK是Elasticsearch.Logstash.Kibana的简称,这三者都是开源软件,通 ...
- CCF-CSP题解 201609-4 交通规划
最小最短路径树. \(dis[j]==dis[i]+w(i,j)\)时,从\(w(i,j')\)和\(w(i,j)\)考虑.--从0分到100分. #include <bits/stdc++.h ...
- mysql数据库实战之优酷项目
管理员: 1.注册功能 客户端 1-1.选择每个功能之前都需要都需要需要连接上服务器,即需要一个socket对象,每个函数传一个client 1-2.密码在传递过程中不能是明文吧,需要加密,可选择ha ...