C# Xml进行序列化与反序列化

c#实体和XML集合(数组)格式序列化及反序列化转换 c# 复杂Xml序列化和反序列化相关特性使用 1、序列化及反序列化方法 /// <summary> /// 对象转xml /// </summary> /// <param name="obj"></param> /// <param name="encoding"></param> /// <returns></returns> p 阅读详情

使用XmlSerializer进行串行化
    关于格式化器还有一个问题,假设我们需要XML,有两中方案:要么编写一个实现IFormatter接口的类,采用的方式类似于SoapFormatter类,但是没有你不需要的信息;要么使用库类XmlSerializer,这个类不使用Serializable属性,但是它提供了类似的功能。
    如果我们不想使用主流的串行化机制,而想使用XmlSeralizer进行串行化我们需要做一下修改:
    a.添加System.Xml.Serialization命名空间。
    b.Serializable和NoSerialized属性将被忽略,而是使用XmlIgnore属性,它的行为与NoSerialized类似。
    c.XmlSeralizer要求类有个默认的构造器,这个条件可能已经满足了。
序列化:

XmlSerializer xs = new XmlSerializer(typeof(List<Peoson>));
xs.Serialize(fs, listPers);
反序列化:

XmlSerializer xs = new XmlSerializer(typeof(List<Peoson>));
List<Peoson> list = xs.Deserialize(fs) as List<Peoson>;

using UnityEngine;
using System;
using System.Collections;
using System.IO;
using System.Xml.Serialization;
using System.Xml;
using System.Collections.Generic;

[Serializable]      // 表示该类可以被序列化
[XmlRoot("AAA")]    // 设置为XML中的根元素名称
public class Person
{
	private string name;
	private int age;

//	[XmlElement("abc")]
	public int abc = 1000; // 类的public属性字段都可以被序列化

	//	[XmlAttribute("Name")]  设置作为xml中的属性
	public string Name
	{
		get { return name;}
		set { name = value;}
	}
	//	[XmlElement("Age")]  设置作为XML中的元素(默认状态)
	public int Age
	{
		get { return age;}
		set { age = value;}
	}
	public Person() { }
	public Person(string name, int age)
	{
		this.name = name;
		this.age = age;
	}

	public void SayHi()
	{
		Debug.LogFormat ("我是{0}, 今年{1}岁", name, age);
	}
}


public class XmlSerialize : MonoBehaviour {

	string filePath = Directory.GetCurrentDirectory() + "/XmlFile.txt";
	string filePath2 = Directory.GetCurrentDirectory() + "/XmlClassFile.txt";

	// Use this for initialization
	void Start () {
		List<Person> listPers = new List<Person> ();
		Person per1 = new Person ("张三", 18);
		Person per2 = new Person ("李四", 20);
		listPers.Add (per1);
		listPers.Add (per2);
		SerializeMethod (listPers);  // 序列化
		DeserializeMethod();  // 反序列化

//		SerializeClassMethod (per1);
//		DeserializeClassMethod ();
		Debug.Log("Done ! ");
	}

	void DeserializeClassMethod()     // Xml实体类反序列化
	{
		FileStream fs = new FileStream (filePath, FileMode.Open);
		XmlSerializer xs = new XmlSerializer(typeof(Person));
		Person p = xs.Deserialize (fs) as Person;
		if (p != null) 
		{
			p.SayHi ();
		}
		fs.Close ();
	}


	void SerializeClassMethod(Person p)   // Xml实体类序列化
	{
		FileStream fs = new FileStream (filePath2, FileMode.Create);
		XmlSerializer xs = new XmlSerializer(typeof(Person));
		xs.Serialize(fs, p);
		fs.Close ();
	}


	void DeserializeMethod()     // Xml列表反序列化
	{
		FileStream fs = new FileStream (filePath, FileMode.Open);
		XmlSerializer xs = new XmlSerializer(typeof(List<Person>));
		List<Person> listPers = xs.Deserialize (fs) as List<Person>;
		if (listPers != null) 
		{
			for (int i = 0; i < listPers.Count; i++)
			{
				listPers [i].SayHi ();
			}
		}
		fs.Close ();
	}

	void SerializeMethod(List<Person> listPers)   // Xml列表序列化
	{
		FileStream fs = new FileStream (filePath, FileMode.Create);
		XmlSerializer xs = new XmlSerializer(typeof(List<Person>));
		xs.Serialize(fs, listPers);
		fs.Close ();
	}
	
	// Update is called once per frame
	void Update () {
	
	}
}

Xml列表序列化的内容:



Xml实体类序列化的内容:



C#中使用DataContractSerializer反序列化多级xml DataContractSerializer类可以将类型实例序列化成xml或者将xml反序列化为类型实例,具体细节可以参照MSDN官方文档。 最近遇到了使用DataContractSerializer反序列化多级xml文件为对象的问题,这里的多级指的是xml文件中的节点深度大于2,文件结构如下: Kevin 23 Waner Sydney 阅读详情

相关推荐

C#实体对象与XML集合的序列化与反序列化

在上面的示例中,我们首先创建了一个Person对象,并将其序列化为XML格式的字符串,保存到名为"person.xml"的文件中。接着,我们通过反序列化操作将该XML格式的字符串重新转换为Person对象,并输出其属性值。本篇文章将介绍如何使用C#实现实体对象和XML集合之间的序列化和反序列化转换。首先,我们需要定义一个实体类,该类将作为我们的示例对象进行序列化和反序列化操作。类,我们可以方便地将对象转换为XML格式,并实现相反的操作以还原对象。请注意,在进行序列化和反序列化操作时,需要使用。

ByteLegend的博客 315

C# XML序列化和反序列化(XmlSerializer)

概述 XML序列化和反序列化是C#的常用技术,实现的方式有很多种,序列化即将对象转化为便于传输的数据格式, 常见的方法有:二进制,字节数组,json字符串,xml字符串等。今天主要通过XmlSerializer类的Serialize和Deserialize方法实现.标注 如果使用XmlSerializer类实现序列化,不需要用[Serializable]属性标记对象的类型。如果用D...

dotNET跨平台 9008

C#实现XML文件的序列化和反序列化

一、C#实现XML文件的序列化和反序列化核心 /*** * Title:"基础工具" 项目 * 主题:XML帮助类 * Description: * 功能: * 1、将对象序列化为xml文件且保存 * 2、将对象序列化为xml字符串 * 3、将xml文件反序列化为对象 * 4、将xml字符串反序列化为对象 * Date:2021 * Version:0.1版本 * Author:Coffee * Modify Recoder: */ using System

提供C#相关开发 、云计算、运维测试、网络安全相关技术分享与服务,有意向可联系。 3105

c# XML序列化与反序列化

原先一直用BinaryFormatter来序列化挺好,可是最近发现在WinCE下是没有办法进行BinaryFormatter操作,很不爽,只能改成了BinaryWriter和BinaryReader来读写,突然想到能不能用XML来序列化?于是在网上查了些资料便写了些实践性代码,做些记录,避免以后忘记。序列化对象    public class People    {        [Xml

ljsql的专栏 2088

C#中实现XML序列化和反序列化的详细指南

在XML中,属性(Attributes)和子元素(Elements)都有其特定的用途和上下文。属性通常用于提供有关元素的附加信息,而子元素则用于表示复杂信息或数据的嵌套结构。在C#中,使用时,可以通过类的字段和属性来控制哪些成员应被序列化为属性或子元素。在第四章,我们将深入探讨如何在C#中自定义序列化输出,以创建符合特定需求的XML格式。这个过程涉及对XmlWriter和等类的使用,以及如何在自定义操作中处理复杂的数据结构和性能优化。

weixin_42402664的博客 1623

C# xml序列化和反序列化

C# asp.net core xml序列化和反序列化

qq_36437991的博客 1388

C#序列化反序列化生成XML

需要序列化的类型前标注[XmlRoot("objects")]的共有属性也不会被序列化;枚举类型的属性序列化前要赋值。注:私有属性不会被序列化;标注为[XmlIgnore]类来实现序列化和反序列化。

a_dafei的博客 636

【数据集】waymo motion dataset介绍与数据解析可视化

waymo motion数据集下载,数据描述,数据特征和地图特征,数据解析并完成数据可视化

shuaixio的博客 5180

C#——XML格式序列化和反序列化

在C#中,可以使用System.Xml.Serialization命名空间下的XmlSerializer类来实现XML的序列化。

qq_3517289697的博客 839

Gromacs空蛋白模拟实战:从PDB文件到动力学轨迹的完整流程解析

本文详细解析了使用Gromacs进行空蛋白分子动力学模拟的完整实战流程。从PDB文件处理、力场选择与拓扑构建,到模拟盒子创建、溶剂化与电荷中和,再到能量最小化、NVT/NPT平衡及最终的生产模拟与基础分析,提供了每一步的命令详解和关键注意事项,旨在帮助计算生物学研究者系统掌握这一核心研究工具。

weixin_28454475的博客 276

单细胞测序流程(十)KEGG通路富集分析与可视化圈图实战解析

本文详细解析了单细胞测序数据分析中KEGG通路富集分析与可视化圈图的完整实战流程。从差异表达基因列表出发,通过R语言进行KEGG富集分析,并利用Perl脚本进行基因ID转换,最终使用GOplot包绘制高级可视化圈图,帮助研究者将基因列表转化为有意义的生物学故事。

i7j8k9l的博客 406

C#序列化反序列化读写XML文件

为了构建如下图所示的xml文件 在这个文件中CompanyConfig为该XML的根节点,它的里面由多个DepartmentConfig节点组成,在DepartmentConfig节点中又包括PersonInfo节点,PersonInfo中又包括姓名和职位。 下面首先我们要做的是创建与该XML相对应的对象,然后把对象转换为上述XML(序列化),或者把上述XML转换为对象(反序列化)。 ...

Mr.Sun 的博客 6491

springboot+shardingsphere+druid 实现基于时间的水平分表

使用shardingsphere基于时间字段的动态水平分片。

weixin_42207940的博客 2627

C#中XML序列化和反序列化初探

C#中XML序列化和反序列化初探 这里是一个Demo,简单实现了C#中对象的XML序列化技术。首先,我们定义一个需要序列化的对象:using System;namespace XMLSerializer{       ///        /// 测试类       ///        public class TestXML       {   

创世纪 4629

企业级智能知识库问答AI助手(大模型+Python)

智能知识问答库AI助手

usa_washington的博客 1655

麒麟系统无法进入单用户模式该怎么办?

🏆本文收录于《全栈Bug调优(实战版)》专栏,主要记录项目实战过程中所遇到的Bug或因后果及提供真实有效的解决方案,希望能够助你一臂之力,帮你早日登顶实现财富自由🚀;同时,欢迎大家关注&&收藏&&订阅!持续更新中,up!up!up!! 备注:部分问题/疑难杂症搜集于互联网。

**My Coding Family** 1820

C# 序列化与反序列化指南:将对象数据写入/读取到XML文件

详细介绍如何使用 C# 进行 XML 文件的序列化和反序列化,包括基本概念、使用 XmlSerializer 类的步骤、自定义对象的序列化示例代码以及读取和反序列化 XML 文件的示例代码。

qq_35320456的博客 2561

【目标检测】基于yolov5的铝型材表面缺陷检测(附代码和数据集,Ubuntu或者Linux系统均可运行)

【目标检测】基于yolov5的铝型材表面缺陷检测(附代码和数据集,Ubuntu或者Linux系统均可运行)

学无止境、积少成多、厚积薄发 2170

C#中XML与对象之间的序列化、反序列化

using System; using System.IO; using System.Text; using System.Xml; using System.Xml.Serialization; namespace Xml.Utility { public static class XmlUtil { /// <summary&g...

weixin_34144848的博客 229

33、密码学中的选择密文攻击与Cramer - Shoup加密方案

本文详细介绍了密码学中选择密文攻击的背景及其对Cramer-Shoup公钥加密方案的影响。该方案在决策Diffie-Hellman假设和抗碰撞哈希函数的基础上,能够有效抵御自适应选择密文攻击,并且其安全性无需依赖随机预言机模型。文章还分析了Cramer-Shoup方案的设计原理、加密与解密过程,以及其在标准假设下的安全性证明方法。此外,通过一系列相关练习,帮助读者进一步理解密码学概念如密文不可区分性、ElGamal加密、Goldwasser-Micali方案等。最后,文章展望了密码学的未来发展趋势,包括量子

vscode6remote的博客 100

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

C#中xml的序列化和反序列化

反序列化方法: /// <summary> /// 反序列化 /// </summary> /// <param name="type">类型</param> /// <param name="xml">XML字符串</param&...

MonkeyBananas的博客 845

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

android xml 反序列化,C#实现复杂XML的序列化与反序列化

本文以一个实例的形式讲述了C#实现复杂XML的序列化与反序列化的方法。分享给大家供大家参考。具体方法如下:已知.xml(再此命名default.xml)文件,请将其反序列化到一个实例对象。Default.XML文件如下:C#示例代码如下:using System;using System.Collections.Generic;using System.Linq;using System.Text...

weixin_36238982的博客 182

Outlook Express 6 (OE6) for Win7/Win8/Win10

英文版 Outlook Express6.0, 兼容Win7/Win10/WinXP,解压就可用。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

一文看懂C#对XML文件序列化与反序列化解析教程(小白版)

本文介绍了C#中XML序列化与反序列化的基本操作。首先讲解了XML的基础概念和结构,然后重点阐述了使用XmlSerializer类实现对象与XML相互转换的方法。教程通过Person和ClassRoom两个示例,演示了简单对象和包含集合的复杂对象的序列化过程,包括代码实现、生成的XML文件内容以及运行结果。文章还提供了完整的序列化和反序列化工具方法,帮助开发者快速掌握这一常用技术。本教程适合C#初学者学习XML数据处理的基本技能。

isoft888的专栏,致力于C#/python分享物联网、大数据,神经网络的等领域,欢迎讨论交流! 1098

c# xml序列化和反序列化

1.首先解释一下名次含义: 序列化将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间,对象将其当前状态写入到临时或持久性存储区。以后,可以通过从存储区中读取或反序列化对象的状态,重新创建该对象。 反序列化与之相反将可存储或可传输的形式转换为对象的状态信息。这里不再多说 直接上代码: using System; using System.Collections.Generic

c13_tianming的专栏 769

C#对Xml的读写,序列化与反序列化

1、定义一个可序列化的类 using System.Collections; using System.Collections.Generic; using UnityEngine; using System.Xml.Serialization; using System.IO; [System.Serializable] public class TestSerilize { [Xm...

weixin_45556869的博客 294

C# XML 序列化和反序列化

public class XmlUtility { /// <summary> /// 将自定义对象序列化为XML字符串 /// </summary> /// <param name="myObject">自定义对象实体</param> /// <ret...

698
上一篇: C# 二进制BinaryFormatter进行序列化与反序列化
下一篇: where T : class 泛型约束
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独立游戏开发指南

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值