C# 序列化与反序列化之xml通过实现IXmlSerializable进行序列化的解决方案

摘要:
“);Console.WriteLine($”测试序列化结果:{s}“);Console.ReadLine();}}}运行结果:

新建控制台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 = "11111", HomeAddress = new AddressIXmlSerializable { Street = "大街三三号", PostCode = "123" } };
            string s = SerializeManager.Instance.XmlSerialize<XmlPersonIXmlSerializable>(xmlPersonIXmlSerializable);//序列化
            Console.ForegroundColor = ConsoleColor.Green;
            Console.WriteLine("测试序列化成功。。。");
            Console.WriteLine($"测试序列化结果:
{s}");
            Console.ReadLine();
        } 
  }
}

运行结果:

C# 序列化与反序列化之xml通过实现IXmlSerializable进行序列化的解决方案第1张

免责声明:文章转载自《C# 序列化与反序列化之xml通过实现IXmlSerializable进行序列化的解决方案》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇JavaScript键盘鼠标事件处理Ubuntu Linux系统开启TELNET服务的方法(2)下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

微软CRM系统二次开发步骤以及注意事项

微软CRM系统的二次开发主要包括四个方面:1)自定义实体的设置;2):站点图的设置;3)ISV.Config文件(实体页面导航条以及功能菜单)的配置;4)客户端JavaScript的设计。 特别注意:对系统中进行的二次开发之后一定要在自定义界面选择“发布”,不然是不能使用的。 一:自定义实体的设置 微软CRM系统提供按照自己需求要求,对CRM系统功能进行扩...

【spring boot】捕获全局异常@RestControllerAdvice

一.由来场景:  使用 Java的validation做入参的校验  ,但是这种入参校验在还没有进入controller就会字段校验不通过,从而直接返回异常信息给前端,     前端的异常提醒, 类似于下面这种 很不友好的  后端接口报错提示信息:   二.解决方法1.解决如上问题,需要对异常做捕获处理,Spring boot 提供了@RestContr...

WebGL 内嵌网页的一种解决方案

  之前使用的 ZFBrowser 嵌入方案可以发布到 Win, OS, Linux 上, 可是其它的就不行, 因为它用的谷歌内核嘛, 在 WebGL 上照理来说应该是最方便的啊, 因为它本身就是运行在浏览器内核上的, 前面的 BrowserInput 已经研究过向网页注入代码以及调用了, 现在试试在 WebGL 环境下来注入代码, 来创建简单的内嵌网页看...

.NET中的Func委托用法

MSDN对于Func<T, TResult>)的官方解释: 封装一个具有一个参数并返回 TResult 参数指定的类型值的方法。  下面通过几个例子对比下,就容易知道其用法: 以下例子演示了如何利用委托将字符串转化为大写:     delegate string ConvertMethod(string inString);    privat...

java匿名发送邮件(不需要登录)

packagecom.liu.test; importjava.security.GeneralSecurityException; importjava.util.Date; importjava.util.Hashtable; importjava.util.Properties; importjavax.mail.BodyPart; import...

c# datagridview 相关操作。

string[] newRow ={"long","d","b"}; Gridview.Rows.Insert(Gridview.Rows.Count, newRow); datagridview 设置某行某列的单元格可修改: private voidSetGridCellEdit() { if (repgr...