C#对象的 Xml序列化与反序列化

本文介绍了一个使用C#进行对象序列化和反序列化的具体例子。通过创建Person类及其关联的Course类,演示了如何将对象转换为XML文件存储,并从XML文件中读取数据重建对象的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 

 

 


using System.Collections.Generic;
public class Person
{
    
private string name;
    
public string Name
    {
        
get
        {
            
return name;
        }
        
set
        {
            name 
= value;
        }
    }
    
public string Sex;
    
public int Age = 31;
    
public List<Course> Courses=new List<Course>();
    
public Person()
    {
    }
    
public Person(string Name)
    {
        name 
= Name;
        Sex 
= "";
    }
}

 

public class Course
{
    
public string Name;
    
public string Description;
    
public Course()
    {

    }
    
public Course(string name, string description)
    {
        Name 
= name;
        Description 
= description;
    }
}

 

/// <summary>
    
/// 序列化
    
/// </summary>
    
/// <param name="filePath"></param>
    public void Serialiaze(String filePath)
    {
        Person c 
= new Person("James Chen");
        c.Courses.Add(
new Course("高等数学","思维工具"));
        c.Courses.Add(
new Course("大学英语""交流工具"));
        c.Courses.Add(
new Course("离散数学""计算机理论"));
        XmlSerializer xs 
= new XmlSerializer(typeof(Person));
        Stream stream 
= new FileStream(filePath, FileMode.Create, FileAccess.Write, FileShare.ReadWrite);
        xs.Serialize(stream, c);
        stream.Close();
    }
    
/// <summary>
    
/// 反序列化
    
/// </summary>
    
/// <param name="filePath"></param>
    public void Deserialize(String filePath)
    {
        XmlSerializer xs 
= new XmlSerializer(typeof(Person));
        Stream stream 
= new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.ReadWrite);
        Person p 
= (Person)xs.Deserialize(stream);
        Response.Write(p.Name
+"<br>");
        Response.Write(p.Age.ToString() 
+ "<br>");
        Response.Write(p.Courses.Count.ToString());
        stream.Close();
        
    }

 

<?xml version="1.0"?>
<Person xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
  
<Sex></Sex>
  
<Age>31</Age>
  
<Courses>
    
<Course>
      
<Name>高等数学</Name>
      
<Description>思维工具</Description>
    
</Course>
    
<Course>
      
<Name>大学英语</Name>
      
<Description>交流工具</Description>
    
</Course>
    
<Course>
      
<Name>离散数学</Name>
      
<Description>计算机理论</Description>
    
</Course>
  
</Courses>
  
<Name>James Chen</Name>
</Person>

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值