C# 序列化与反序列化之xml通过实现IXmlSerializable进行序列化的解决方案
新建控制台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进行序列化的解决方案的更多相关文章
- C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案
C# 序列化与反序列化之xml对属性或者字段的子类化的子对象进行序列化的解决方案 xml序列化涉及到XmlRoot,XmlInclude,XmlElement,XmlAttribute,XmlType ...
- JSON 序列化与反序列化, 与XML相互转换.
方式一: 使用于 JavaScriptSerializer类 适用于普通场景, Excel导入导出, 前台传输查询参数直接处理等. JavaScriptSerializer serializer = ...
- C# XML序列化与反序列化与XML格式详解
1.https://www.cnblogs.com/sandyliu1999/p/4844664.html XML是有层次结构的,序列化实际就是内存化,用连续的结构化的内存来存储表示一个对象,那么这两 ...
- .net序列化与反序列化——提供多次存储对象集后读取不完全解决方案
||问题: 文本文档读取序列化文件时只能读取第一次序列化对象或对象集,而多次序列化存到同一个文本文件中不能完全读取.最近做一个简单的学生管理系统,涉及到多次将学生对象序列化后追加存储到同一个文档中.在 ...
- C#学习日志 day8 -------------- async await 异步方法入门(引用博客)以及序列化和反序列化的XML及json实现
首先是异步方法的介绍,这里引用自http://www.cnblogs.com/LoveJenny/archive/2011/11/01/2230933.html async and await 简单的 ...
- 将对象序列化,反序列化到XML
using System; using System.Collections.Generic; using System.IO; using System.Linq; using System.Tex ...
- go语言学习 ---struct 对象的序列化和反序列化(xml)
实例1: //main package main import ( "encoding/xml" "fmt" ) type person struct { Na ...
- 总结:实体类和(XML或二进制)之间相互转(序列化和反序列化)
XML和实体类之间相互转换(序列化和反序列化) C# XML反序列化与序列化举例:XmlSerializer XML文件与实体类的互相转换 通过我前面的几篇收藏的文章,今天来自己做个对实体类对象序 ...
- C#XML的序列化与反序列化
要序列化的对象的类: [Serializable]public class Person{private string name;public string Name{get{return name; ...
随机推荐
- Vue项目打包发布后CSS中的背景图片不显示
相信有很多同学在学习vue的刚开始都遇到过项目打包发布后发现CSS中的背景图片不显示,具体如何解决只需要更改bind的配置即可 修改 build/utils.js 中的 generateLoaders ...
- Spring中基于注解的IOC(二):案例与总结
2.Spring的IOC案例 创建maven项目 导入依赖 pom.xml xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" ...
- Solr基础理论【相关度计算】
一.简介 寻找匹配的文档是构建优质搜索体验的关键步骤,但这仅仅是第一步.大多数用户不愿意通过逐页翻阅搜索结果来找到想要的文档.根据一般经验,仅有10%的用户在网页搜索中有意愿继续翻阅第一页以后的搜索结 ...
- 购买了一台阿里云ECS后安装Java项目运行环境
在docker等虚拟化技术大行其道的今天,我原本也想在我买的ECS服务器里全系使用docker技术,只可惜在我尝试后发现我的ECS配置不够高,整个服务器卡到爆炸,无奈只能使用最原始的方式. 我买的服务 ...
- css q标签和quotes属性的使用
当元素是q的时候,可以无需使用::after或者::before选择器,直接就可以为q元素的内容添加标记元素. <!DOCTYPE html> <html lang="en ...
- Dijkstra算法求最短路径 Java实现
基本原理: 迪杰斯特拉算法是一种贪心算法. 首先建立一个集合,初始化只有一个顶点.每次将当前集合的所有顶点(初始只有一个顶点)看成一个整体,找到集合外与集合距离最近的顶点,将其加入集合并检查是否修改路 ...
- 【异常】Zipkin server java.lang.IllegalArgumentException: Prometheus requires that all meters with the same name have the same set of tag keys. There is already an existing meter containing tag keys [meth
解决办法: 添加下面配置就OK #zipkin启动报错无法访问的解决方法 management.metrics.web.server.auto-time-requests: false
- (三)Kubernetes 快速入门
Kubernetes的核心对象 API Server提供了RESTful风格的编程接口,其管理的资源是Kubernetes API中的端点,用于存储某种API对象的集合,例如,内置Pod资源是包含了所 ...
- CentOS7 开机提示Initial setup of CentOS Linux 7 (Core)
一.开机以后提示信息如下 二.解决方法 . 输入1,按Enter同意许可协议 . 输入2,按Enter同意许可协议 . 输入q,按Enter退出 . 输入yes,按Enter确定 . 完成重启后即可正 ...
- springboot集成ftp
目录 springboot集成ftp pom依赖包 ftp登录初始化 ftp上传文件 ftp读取文件,并转成base64 ftp下载文件 ftp客户端与服务端之间数据传输,主动模式和被动模式 spri ...