本文给大家分享一下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文档的更多相关文章

  1. C#反序列化XML异常:在 XML文档(0, 0)中有一个错误“缺少根元素”

    Q: 在反序列化 Xml 字符串为 Xml 对象时,抛出如下异常. 即在 XML文档(0, 0)中有一个错误:缺少根元素. A: 首先看下代码: StringBuilder sb = new Stri ...

  2. XML反序列化出错,XML 文档(2, 2)中有错误

    XML转换为实体类的错误处理方案 一.错误描述: XML反序列化出错,XML 文档(2, 2)中有错误 二.解决方案: 在实体类的字段要加上XmlElement属性 三.具体实现: 1.XML文档 & ...

  3. 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.网络监听配置 ...

  4. 对象序列和反序列化Xml

    1. XmlArray和XmlArrayItem XmlArray和XmlArrayItem是不同的,XmlArray是指这个数组叫什么,XmlArrayItem 值数组的每个元素叫什么. <X ...

  5. C# 序列化反序列化XML的帮助类

    以下是一个包装的用于序列化反序列化XML和C# 对象的类.  public class XmlSerializeHelper<T>     {         #region Serial ...

  6. C#序列化与反序列化(Serialize,Deserialize)实例详解

    这篇文章主要介绍了C#序列化与反序列化(Serialize,Deserialize)的方法,实例分析了C#序列化与反序列化的常见技巧,需要的朋友可以参考下 本文实例讲述了C#序列化与反序列化(Seri ...

  7. C# xml数组的序列和反序列化

    先来看xml <?xml version="1.0"?> <root xmlns:xsi="http://www.w3.org/2001/XMLSche ...

  8. 对类参数的序列化和反序列化XML

    /// <summary> /// Xml序列化与反序列化 /// </summary> public class XmlUtil { #region 反序列化 /// < ...

  9. JAVA序列化和反序列化XML

    package com.lss.utils; import java.beans.XMLDecoder; import java.beans.XMLEncoder; import java.io.Bu ...

随机推荐

  1. 关于 OpenIdConnect 认证启用 HTTPS 回调 RedirectUri 不生效问题

    在搭建 IdentityServer 服务端后,我们尝试使用了 OIDC(OpenID Connect) 的中间件来代替了原先的 Session 系统认证方式,起初采用的是 HTTP 协议,一切都没有 ...

  2. CSS动画原理及硬件加速

    一.图层 图层即层叠上下文,具体概念和应用大家可以看我之前转自张鑫旭大神博客的<CSS层叠上下文和层叠顺序>,这里我们简单复习一下产生层叠上下文的原因. 1.根层叠上下文 指的是页面根元素 ...

  3. Mac下安装Eclipse和Tomcat等

    Mac下做Java开发还是很方便的,不用像.NET开发一样在Parallel Desktop里面安装Windows虚拟机,Mac下面默认已经安装了JDK. 当然,你如果要安装JDK7,请先阅读:htt ...

  4. 理解 Generator 的执行

    Generator & yield 开局官宣:sec-generatoryield,这是对yield的介绍. 同样巴拉巴拉列了9条,将以上链接中的说明简化成3条: 1. 在GeneratorF ...

  5. vmware workstation 下安装ubuntu

    安装时我是借鉴 https://blog.csdn.net/xiaohua0877/article/details/78507631 期间遇到几个问题 键盘不好使,解决办法是重新运行wmware wo ...

  6. mongo学习使用记录1

    1 mongo的安装 1.添加MongoDB安装源 1.添加MongoDB安装源vim /etc/yum.repos.d/mongodb-enterprise.repo 将下列配置项写入文件 [mon ...

  7. golang内置数据类型作为函数参数

    先上结论 golang的所有内置类型作为函数参数传递都是传值的方式(没有传递引用一说),需要注意的是:数组.slice和map作为函数参数时也是传值,但是如果对结构内元素进行的修改,修改的是原数据.如 ...

  8. elasticSearch6源码分析(12)DiscoveryModule

    1.DiscoveryModule概述 /** * A module for loading classes for node discovery. */ 2.discovery The discov ...

  9. React Native从入门到放弃之环境搭建

    官网 https://facebook.github.io/react-native/ 中文网站 http://reactnative.cn/ 相关文档 http://www.lcode.org/史上 ...

  10. PHP函数array_merge

    今天因一个Bug重新审视了下array_merge()这个函数. 定义:array_merge — 合并一个或多个数组 规范:array array_merge(array $array1 [, ar ...