C# XML序列化与反序列化的实现示例
128 浏览量
更新于2024-08-31
收藏 34KB PDF 举报
"本文主要介绍在C#中如何实现对象的XML序列化和反序列化。XML序列化是将对象转换为XML格式的过程,而反序列化则是将XML数据恢复为对象的过程。这对于数据存储、网络传输或者持久化对象状态等场景非常有用。"
在C#中,XML序列化可以通过`System.Xml.Serialization`命名空间中的`XmlSerializer`类来实现。以下是一个简单的示例,展示了如何使用`XmlSerializer`进行对象的XML序列化和反序列化:
首先,我们定义一个要序列化的类,例如:
```csharp
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
```
接下来,我们可以使用`Util`类中的静态方法实现XML序列化和反序列化:
```csharp
public static class Util
{
///<summary>
/// 将对象序列化为XML字符串
///</summary>
public static string SerializeToXml<T>(T obj)
{
string xmlString = string.Empty;
using (MemoryStream ms = new MemoryStream())
{
var xmlSerializer = new XmlSerializer(typeof(T));
xmlSerializer.Serialize(ms, obj);
xmlString = Encoding.UTF8.GetString(ms.ToArray());
}
return xmlString;
}
///<summary>
/// 将XML字符串反序列化为对象
///</summary>
public static T DeserializeFromXml<T>(string xmlString)
{
T result = default(T);
using (MemoryStream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))
{
using (XmlReader xmlReader = XmlReader.Create(xmlStream))
{
var xmlSerializer = new XmlSerializer(typeof(T));
result = (T)xmlSerializer.Deserialize(xmlReader);
}
}
return result;
}
}
```
使用以上方法,你可以方便地将`Person`对象转换为XML字符串,以及将XML字符串还原为`Person`对象。例如:
```csharp
Person person = new Person() { Name = "张三", Age = 30 };
string xml = Util.SerializeToXml(person); // 对象序列化为XML字符串
Person deserializedPerson = Util.DeserializeFromXml<Person>(xml); // XML字符串反序列化为对象
```
XML序列化过程中,`XmlSerializer`会根据对象的属性和字段自动生成XML元素。`XmlSerializer`还可以处理更复杂的对象结构,包括嵌套的对象、数组和枚举等。同时,可以通过特性(Attributes)来自定义XML元素的名称、命名空间等属性。
在实际应用中,XML序列化不仅可以用于本地数据存储,也可以在网络通信中作为数据交换格式,因为它是一种通用且可读性强的格式。此外,还可以通过设置`XmlWriter`或`XmlReader`来控制XML的写入和读取过程,以满足特定的需求。
245 浏览量
461 浏览量
点击了解资源详情
162 浏览量
2318 浏览量
2023-12-14 上传
135 浏览量
![](https://profile-avatar.csdnimg.cn/default.jpg!1)
weixin_38651165
- 粉丝: 4
最新资源
- Python分类MNIST数据集的简单实现
- Laravel框架实战开发项目:Eval-App
- 通用触屏驱动:四点或九点校正功能
- 自定义相机应用:拍照、水印添加及屏幕适应预览
- 微信多开协议二次开发及MYSQL数据库配置指南
- 探索Googology网站:yaxtzee.github.io的深度解析
- React组件开发教程与实践指南
- 掌握OpenGL+Qt模拟聚光灯效果
- xlrd-0.9.3:Python处理Excel的强大库
- ycu校园网站前端开发教程与实践
- I2S接口APB总线代码与文档解析
- 基于MATLAB的陀螺仪数据卡尔曼滤波处理
- 答题APP代码实现:MySQL+JSP+Android整合
- 牛津AI小组与微软合作实现Project 15音频识别挑战
- 实现QQ风格侧滑删除功能的SwipeDemo教程
- MATLAB中Log-Likelihood函数的开发与应用