首页 > 编程语言 >C#——XML格式序列化和反序列化

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

时间:2024-07-09 09:30:23浏览次数:19  
标签:XML C# System Person using 序列化 public

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

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

首先,定义一个可序列化的对象模型:

using System;
using System.Xml.Serialization;
 
[XmlRoot("Person")]
public class Person
{
    [XmlElement("Name")]
    public string Name { get; set; }
 
    [XmlElement("Age")]
    public int Age { get; set; }
}

序列化

using System.IO;
using System.Xml.Serialization;
 
public static string SerializeObject(Person obj)
{
    XmlSerializer serializer = new XmlSerializer(typeof(Person));
    using (StringWriter textWriter = new StringWriter())
    {
        serializer.Serialize(textWriter, obj);
        return textWriter.ToString();
    }
}

反序列化

using System.IO;
using System.Xml.Serialization;
 
public static Person DeserializeObject(string xml)
{
    XmlSerializer serializer = new XmlSerializer(typeof(Person));
    using (StringReader textReader = new StringReader(xml))
    {
        return (Person)serializer.Deserialize(textReader);
    }
}

使用方法

Person person = new Person { Name = "John Doe", Age = 30 };
string xml = SerializeObject(person);
Console.WriteLine(xml);
 
Person deserializedPerson = DeserializeObject(xml);
Console.WriteLine($"Name: {deserializedPerson.Name}, Age: {deserializedPerson.Age}");

这个例子中,我们定义了一个Person类,并用XmlRoot和XmlElement属性标记了类和属性,以指导XML序列化器如何序列化对象的属性。然后,我们创建了两个方法,SerializeObject用于将Person对象序列化为XML字符串,DeserializeObject用于将XML字符串反序列化为Person对象。最后,我们创建了一个Person对象,将其序列化,然后反序列化,并打印出结果。

标签:XML,C#,System,Person,using,序列化,public
From: https://blog.csdn.net/qq_3517289697/article/details/140274670

相关文章

  • backtrace() 段错误定位
    段错误定位原因是昨天遇到一个BUG,复现概率很小,一直复现了一下午,后来google发现可以用execinfo.h里的backtrace函数及信号处理机制,来让程序在发生段错误时自动打印调用堆栈。最后终于复现出来了两次,用这个函数也定位到了出错位置,是多线程下的一个同步问题。之前遇到的BUG基本都......
  • C#——多态详情
    多态多态:是同一个行为,具有多个不同表现形式或形态的能力多态分为两种:静态性多态:函数重载,符号重载动态性多态:虚方法,抽象类,接口静态多态在编译时,函数和对象的连接机制被称为早期绑定,也被称为静态绑定。C#提供了两种技术来实现静态多态性。分别为:•函数重载•运算......
  • 创建vue-cli脚手架项目 和各个文件夹用途(最全面)
    一、安装Vue脚手架1、第一步(仅第一次执行):全局安装@vue/cli npmi@vue/cli-g2、切换到要创建项目的目录,然后创建项目vuecreatehellocli3、 进入项目 cdhellocli4、启动项目npmrunserve(默认一般是可从package.json→scripts下查看 )二、vue-cli脚手架初......
  • 运营商如何与第三方服务商合作,共同建设PCDN网络?
    运营商与第三方服务商合作,共同建设PCDN(P2PCDN)网络,是一个涉及技术、资源、运营等多方面的复杂过程。以下是一些建议的操作步骤:一.明确合作目标与业务模式:1.运营商与第三方服务商首先需要明确合作的目标,例如提升网络覆盖、降低运营成本、提高内容分发效率等。2.根据目标确定合......
  • Linux系统运维命令:查看http的并发请求数及其TCP连接状态(使用netstat结合awk和sort,组合
    一、需求二、解决方法(一)解决思路(二)命令三、实例演示和命令解释(一)实例演示(二)命令解释四、扩展一、需求用户访问一个视频监控平台的web服务特别频繁,据客户说,有大概2000个用户,要随机访问这个视频监控平台,这样对带宽的要求非常大。因此,他们需要查看到底有多少个http的并......
  • C++ 保障异常安全的手段和措施
    在C++中,保障异常安全是编写健壮、可靠代码的重要方面。异常安全确保程序在遇到异常时能够正确处理,不会导致资源泄露或数据不一致等问题。以下是一些保障C++异常安全的手段和措施:1.RAII(资源获取即初始化)RAII是一种在C++中广泛使用的资源管理技术,它通过对象的构造函数获取......
  • SpringBoot使用jdbcTemplate连接人大金仓按月备份表
    方式一:采用SELECT*INTOFROM复制表数据以及结构到新表,再清空原表并重置序列代码如下:点击查看代码privatevoidpnsDataCopy(){log.info("{}===>表开始复制",PNS_TABLE);longl=System.currentTimeMillis();TransactionStatustransactionS......
  • NCCL拓扑管理 - Topo模块
    Topo模块提供System拓扑和Graph拓扑的构建接口,依赖XML模块。链路链路带宽NCCL对不同链接进行建模,但数值的绝对值看起来并不准,笔者估计代码开源时做了保密处理,但只要数值的相对值不影响拓扑搜索便对执行逻辑没有影响,所以无需较真这些带宽数值。#defineLOC_BW5000.0#de......
  • camunda快速入门(四):如何设计一个带条件分支的流程
    在本节中,您将学习如何使用BPMN2.0排他网关(ExclusiveGateways)使流程更加动态。1、添加两个网关我们想修改我们的流程,使其更具动态性。为此,请在CamundaModeler中打开该过程。接下来,从Modeler的左侧菜单中,选择网关形状(菱形)并将其拖动到“开始事件”和“服务任务”之间的......
  • camunda快速入门(五):DMN规则引擎如何使用
    在本节中,您将学习如何使用BPMN2.0业务规则任务和DMN1.3决策表将决策自动化添加到流程中。1、将业务规则任务添加到流程使用CamundaModeler打开PaymentRetrieval(付款检索)流程,然后单击“ApprovePayment(批准付款)”任务节点。在扳手按钮菜单中将活动类型更改为“Business......