C# 序列化与反序列化之xml通过实现IXmlSerializable进行序列化的解决方案
2024-09-07 11:00:30
新建控制台console项目,添加XmlPersonIXmlSerializable类,和AddressIXmlSerializable类(实现IXmlSerializable)以及AddressIXmlSerializable子类USAddressIXmlSerializable
代码如下:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Schema;
using System.Xml.Serialization; namespace SupremeConsole
{
#region 测试IXmlSerializable
public class XmlPersonIXmlSerializable
{
/// <summary>
/// 姓名
/// </summary>
public string Name { get; set; } /// <summary>
/// 住址
/// </summary>
public AddressIXmlSerializable HomeAddress = new USAddressIXmlSerializable();//子类的序列化 } public class AddressIXmlSerializable : IXmlSerializable
{
public string Street, PostCode; public XmlSchema GetSchema()
{
return null;
} public void ReadXml(XmlReader reader)
{
reader.ReadStartElement();
Street = reader.ReadElementContentAsString("Street", null);
PostCode = reader.ReadElementContentAsString("PostCode", null);
reader.ReadEndElement();
} public void WriteXml(XmlWriter writer)
{
writer.WriteElementString("Street", Street);
writer.WriteElementString("PostCode", PostCode);
}
} public class USAddressIXmlSerializable : AddressIXmlSerializable
{
public string Neighbor;
}
#endregion
}
主方法代码:
using log4net;
using System;
using System.Data;
using System.Data.SQLite;
using System.Diagnostics;
using System.IO;
using System.IO.Compression;
using System.IO.MemoryMappedFiles;
using System.IO.Pipes;
using System.Linq;
using System.Net;
using System.Security.AccessControl;
using System.Security.Principal;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization;
using System.Reflection;
using System.ServiceModel;
using System.ServiceModel.Channels;
using System.Runtime.Serialization;
using System.Collections.Generic; namespace SupremeConsole
{
class Program
{
static void Main(string[] args)
{
XmlPersonIXmlSerializable xmlPersonIXmlSerializable = new XmlPersonIXmlSerializable { Name = "", HomeAddress = new AddressIXmlSerializable { Street = "大街三三号", PostCode = "" } };
string s = SerializeManager.Instance.XmlSerialize<XmlPersonIXmlSerializable>(xmlPersonIXmlSerializable);//序列化
Console.ForegroundColor = ConsoleColor.Green;
Console.WriteLine("测试序列化成功。。。");
Console.WriteLine($"测试序列化结果:\r\n{s}");
Console.ReadLine();
}
}
}
运行结果:
最新文章
- 滚动变色的文字js特效
- xml配置文件的读写
- APP架子迁移指南(一)
- Jquery.Datatables dom表格定位
- inlay检验标准
- RH033读书笔记(9)-Lab 10 Understanding the Configuration Tools
- http?https?相对协议?
- String 转化成java.sql.Date和java.sql.Time
- eclipse中svn的各种状态图标详解
- 【iOS】OC-UTC日期字符串格式化
- Unix shell范例精解 课后题
- vue-cli@3.x初体验之前篇-回顾vue-cli@2.x创建项目的流程
- CentOS7下swap分区创建(添加),删除以及相关配置
- 2017-2018-2 20155309 南皓芯 Exp5 MSF基础应用
- win7下一劳永逸地解决触控板禁用的问题
- CRM rbac 组件的应用
- stl本子
- python计算两个数的百分比
- 【Redis】命令学习笔记——列表(list)+集合(set)+有序集合(sorted set)(17+15+20个超全字典版)
- Cassandra概念学习系列之Cassandra是什么?