新建控制台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();
}
}
}

运行结果:

C# 序列化与反序列化之xml通过实现IXmlSerializable进行序列化的解决方案的更多相关文章

  1. C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案

    C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案 xml序列化涉及到XmlRoot,XmlInclude,XmlElement,XmlAttribute,XmlType ...

  2. JSON 序列化与反序列化, 与XML相互转换.

    方式一: 使用于 JavaScriptSerializer类 适用于普通场景, Excel导入导出, 前台传输查询参数直接处理等. JavaScriptSerializer serializer = ...

  3. C# XML序列化与反序列化与XML格式详解

    1.https://www.cnblogs.com/sandyliu1999/p/4844664.html XML是有层次结构的,序列化实际就是内存化,用连续的结构化的内存来存储表示一个对象,那么这两 ...

  4. .net序列化与反序列化——提供多次存储对象集后读取不完全解决方案

    ||问题: 文本文档读取序列化文件时只能读取第一次序列化对象或对象集,而多次序列化存到同一个文本文件中不能完全读取.最近做一个简单的学生管理系统,涉及到多次将学生对象序列化后追加存储到同一个文档中.在 ...

  5. C#学习日志 day8 -------------- async await 异步方法入门(引用博客)以及序列化和反序列化的XML及json实现

    首先是异步方法的介绍,这里引用自http://www.cnblogs.com/LoveJenny/archive/2011/11/01/2230933.html async and await 简单的 ...

  6. 将对象序列化,反序列化到XML

    using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...

  7. go语言学习 ---struct 对象的序列化和反序列化(xml)

    实例1: //main package main import ( "encoding/xml" "fmt" ) type person struct { Na ...

  8. 总结:实体类和(XML或二进制)之间相互转(序列化和反序列化)

    XML和实体类之间相互转换(序列化和反序列化) C# XML反序列化与序列化举例:XmlSerializer XML文件与实体类的互相转换   通过我前面的几篇收藏的文章,今天来自己做个对实体类对象序 ...

  9. C#XML的序列化与反序列化

    要序列化的对象的类: [Serializable]public class Person{private string name;public string Name{get{return name; ...

随机推荐

  1. 你的MES今天升级了吗?

    你以为把MES装上了就完事了吗?NO NO NO!乔布斯先生曾讲过“你如果出色地完成了某件事,那你应该再做一些其他的精彩事儿.不要在前一件事上徘徊太久,想想接下来该做什么.” 目前大部分企业都已经完成 ...

  2. springboot 单元测试 指定启动类

    问题 在做单元测试时,写了一个工具类,用于注入spring的上下文. public class AppBeanUtil implements ApplicationContextAware { pri ...

  3. Hexo 文章图片添加水印,不用云处理

    由于网上找到的都是借用第三方云处理添加水印,但是我不太想用,所以自己开发了一个插件 Hexo 图片添加水印Github地址 目前插件可以直接在 hexo 官网上搜索到 下面内容都是在 Github 上 ...

  4. Mock Server之flask_restful(python+flask)

    一.结构设计 上一篇,写了Mock Server的基础实现与被测系统的对接 当我们要mock 的 api越来越多的时候,路由与相关的方法都堆在app.py中就不合适了,不可拔插,可读性也比较差,因此要 ...

  5. @NotBlank注解地正确使用

    @NotNull:不能为null,但可以为empty @NotEmpty:不能为null,而且长度必须大于0@NotBlank:只能作用在String上,不能为null,而且调用trim()后,长度必 ...

  6. 201671030114 马秀丽 实验十四 团队项目评审&课程学习总结

    项目 内容 作业所属课程 所属课程 作业要求 作业要求 课程学习目标 (1)掌握软件项目评审会流程:(2)反思总结课程学习内容 任务一:团队项目审核已完成.项目验收过程意见表已上交. 任务二:课程学习 ...

  7. Discuz! X3 数据字典

    pre_common_admincp_cmenu 后台菜单收藏表 字段名 数据类型 默认值 允许非空 自动递增 备注 id smallint(6) unsigned    NO 是   title v ...

  8. sed命令基本用法

    sed是一个非交互式文本编辑器,它可对文本文件和标准输入进行编辑sed 适用于以下三种场合:编辑相对交互式文本编辑器而言太大的文件编辑命令太复杂,在交互式文本编辑器中难以输入的情况对文本扫描一遍,但是 ...

  9. JMeter基础【第六篇】JMeter5.1事务、检查点、集合点、思考时间、其余设置等

    JMeter5.1事务.检查点.集合点.思考时间.其余设置等

  10. Hive元数据配置到MySql

    1 驱动拷贝 1.在/opt/software/mysql-libs目录下解压mysql-connector-java-5.1.27.tar.gz驱动包 [root@hadoop102 mysql-l ...