.NET(C#)使用Serialize、Deserialize序列和反序列化XML文档
本文给大家分享一下C#操作(读取、写入)XML文档的实用方法,即用.NET本身提供的Deserialize和Serialize进行反序列化和序列化XML文档。这种方法主要是对比较规范的XML文档进行操作,因为它(XML文档)和类对象是严格对应的,否则在反序列或序列化的时候会出现错误。其他的不用多说,直接看示例代码吧:
using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization; namespace _01XMLSerialize
{
class Program
{
private static List<UserInfo> list = new List<UserInfo>()
{
new UserInfo()
{
Id = ,
UserName = "张三",
UserPass = "FDASDFAS",
Email = "zhangsan@163.com",
RegTime = DateTime.Now
},
new UserInfo()
{
Id = ,
UserName = "李四",
UserPass = "FDASDFAS",
Email = "lisi@163.com",
RegTime = DateTime.Now
},
new UserInfo()
{
Id = ,
UserName = "王五",
UserPass = "FDASDFAS",
Email = "wangwu@163.com",
RegTime = DateTime.Now
},
new UserInfo()
{
Id = ,
UserName = "赵六",
UserPass = "FDASDFAS",
Email = "zhaoliu@163.com",
RegTime = DateTime.Now
},
new UserInfo()
{
Id = ,
UserName = "田七",
UserPass = "FDASDFAS",
Email = "tianqi@163.com",
RegTime = DateTime.Now
},
new UserInfo()
{
Id = ,
UserName = "王八",
UserPass = "FDASDFAS",
Email = "wangba@163.com",
RegTime = DateTime.Now
}
};
static void Main(string[] args)
{
//序列化对象生成文件
WriteSingleXml(); //反序列化文件生成对象
ReadListXml(); Console.ReadKey();
} /// <summary>
/// 从XML文件中反序列化对象
/// </summary>
private static void ReadListXml()
{
//反序列化文件
Console.WriteLine("反序列化XML文件为集合");
var reader = new XmlSerializer(typeof(List<UserInfo>)); using (var fs = File.OpenRead("UserInfo.xml"))
{
var result = reader.Deserialize(fs) as List<UserInfo>; result.ForEach(Console.WriteLine);
}
Console.WriteLine("反序列化成功");
} /// <summary>
/// 序列化对象到XML文件
/// </summary>
private static void WriteSingleXml()
{
//序列化集合为xml文件
Console.WriteLine("序列化集合为XML文件"); var reader = new XmlSerializer(typeof(List<UserInfo>));
//写入文件
using (var fs = File.OpenWrite("UserInfo.xml"))
{
reader.Serialize(fs, list);
} Console.WriteLine("写入成功");
}
}
}
运行结果如图:

生成的XML文档如下:
<?xml version="1.0"?>
<ArrayOfUserInfo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<UserInfo>
<Id>1</Id>
<UserName>张三</UserName>
<UserPass>FDASDFAS</UserPass>
<Email>zhangsan@163.com</Email>
<RegTime>2016-04-21T09:15:58.5576551+08:00</RegTime>
</UserInfo>
<UserInfo>
<Id>2</Id>
<UserName>李四</UserName>
<UserPass>FDASDFAS</UserPass>
<Email>lisi@163.com</Email>
<RegTime>2016-04-21T09:15:58.5576551+08:00</RegTime>
</UserInfo>
<UserInfo>
<Id>3</Id>
<UserName>王五</UserName>
<UserPass>FDASDFAS</UserPass>
<Email>wangwu@163.com</Email>
<RegTime>2016-04-21T09:15:58.5576551+08:00</RegTime>
</UserInfo>
<UserInfo>
<Id>4</Id>
<UserName>赵六</UserName>
<UserPass>FDASDFAS</UserPass>
<Email>zhaoliu@163.com</Email>
<RegTime>2016-04-21T09:15:58.5576551+08:00</RegTime>
</UserInfo>
<UserInfo>
<Id>5</Id>
<UserName>田七</UserName>
<UserPass>FDASDFAS</UserPass>
<Email>tianqi@163.com</Email>
<RegTime>2016-04-21T09:15:58.5576551+08:00</RegTime>
</UserInfo>
<UserInfo>
<Id>6</Id>
<UserName>王八</UserName>
<UserPass>FDASDFAS</UserPass>
<Email>wangba@163.com</Email>
<RegTime>2016-04-21T09:15:58.5576551+08:00</RegTime>
</UserInfo>
</ArrayOfUserInfo>
.NET(C#)使用Serialize、Deserialize序列和反序列化XML文档的更多相关文章
- C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”
Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...
- XML反序列化出错,XML 文档(2, 2)中有错误
XML转换为实体类的错误处理方案 一.错误描述: XML反序列化出错,XML 文档(2, 2)中有错误 二.解决方案: 在实体类的字段要加上XmlElement属性 三.具体实现: 1.XML文档 & ...
- Oracle 远程访问配置 在 Windows Forms 和 WPF 应用中使用 FontAwesome 图标 C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素” C#[Win32&WinCE&WM]应用程序只能运行一个实例:MutexHelper Decimal类型截取保留N位小数向上取, Decimal类型截取保留N位小数并且不进行四舍五入操作
Oracle 远程访问配置 服务端配置 如果不想自己写,可以通过 Net Manager 来配置. 以下配置文件中的 localhost 改为 ip 地址,否则,远程不能访问. 1.网络监听配置 ...
- 对象序列和反序列化Xml
1. XmlArray和XmlArrayItem XmlArray和XmlArrayItem是不同的,XmlArray是指这个数组叫什么,XmlArrayItem 值数组的每个元素叫什么. <X ...
- C# 序列化反序列化XML的帮助类
以下是一个包装的用于序列化反序列化XML和C# 对象的类. public class XmlSerializeHelper<T> { #region Serial ...
- C#序列化与反序列化(Serialize,Deserialize)实例详解
这篇文章主要介绍了C#序列化与反序列化(Serialize,Deserialize)的方法,实例分析了C#序列化与反序列化的常见技巧,需要的朋友可以参考下 本文实例讲述了C#序列化与反序列化(Seri ...
- C# xml数组的序列和反序列化
先来看xml <?xml version="1.0"?> <root xmlns:xsi="http://www.w3.org/2001/XMLSche ...
- 对类参数的序列化和反序列化XML
/// <summary> /// Xml序列化与反序列化 /// </summary> public class XmlUtil { #region 反序列化 /// < ...
- JAVA序列化和反序列化XML
package com.lss.utils; import java.beans.XMLDecoder; import java.beans.XMLEncoder; import java.io.Bu ...
随机推荐
- 全网最详细的Sublime Text 3的激活(图文详解)
不多说,直接上干货! 前期博客 全网最详细的Windows里下载与安装Sublime Text *(图文详解) ZYNGA INC. User License EA7E- 927BA117 84C93 ...
- MVC源码分析 - Action/Result 过滤器(续)
上一篇 看到了Action/Result过滤器的执行顺序: OnActionExecuting -> Action -> OnActionExecuted -> OnResultEx ...
- psql工具使用(二)
所有psql命令都以 \ 开头 一.使用psql -l查看有哪些数据库: -bash-4.2$ psql -l List of databases Name | Owner | Encodin ...
- 一次Linux服务器被入侵和删除木马程序的经历
转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.http://wzlinux.blog.51cto.com/8021085/1740113 一.背景 晚上看到有台服 ...
- Linux交换空间和内存不足
交换空间 交换技术就是将一页内存复制到预先设定的硬盘上的交换空间,来释放该页占用内存.物理内存和交换空间的和就是可提供的虚拟内存的总量.Linux有两种形式的交换方式,分别是交换分区,交换文件. 优点 ...
- mysql 获取自增主键
MyBatis 3.2.6插入时候获取自增主键方法有二 以MySQL5.5为例: 方法1: <insert id="insert" parameterType="P ...
- gitlab之gitlab-ci和gitlab-runner<二>
1.使用 该版未接入k8s,下一篇会写接入k8s. 配置项目使用gitlab-ci和gitlab-runner,在项目的根目录中添加.gitlab-ci.yml文件,用于触发pipeline. .ho ...
- 解决U盘拷贝时提示文件过大问题(不能拷贝超过4个g的文件)
为什么一个16G的U盘却拷不进一个4G大点的文件呢,想必很多朋友们都在疑问? 其实这跟U盘的磁盘格式有关,目前市面上常用的U盘大都是FAT32格式,我们可以查看U盘属性. 那么FAT32是什么呢? F ...
- POJ 3692 Kindergarten(最大团问题)
题目链接:http://poj.org/problem?id=3692 Description In a kindergarten, there are a lot of kids. All girl ...
- Java maven项目的小随笔
1.web.xml里面有filter拦截设置,注意. 2.编译之后,网页中读取资源的路径是apache-tomcat/wtpwebapps/..,若该路径下没有相应资源,则报404错误.