序列化操作对于开发人员来说最熟悉不过了。

序列化分为:序列化和反序列化。

序列化名词解释:序列化是将对象状态转换为可保持或传输的格式的过程。

与序列化相对的是反序列化,它将流转换为对象。这两个过程结合起来,可以轻松地存储和传输数据。这就是序列化的意义所在。

我们可以把对象序列化为不同的格式,比如说,Json序列化、XML序列化、二进制序列化、SOAP序列化等,以上这些不同的格式也都是为了适应具体的业务需求。

最近开发工作中需要一个xml序列化操作,

大概需求就是,有一个系统B提供了一个对外数据访问接口,B系统只接收xml的格式数据。

在这里有两种写法:

1.拼凑成一个对应格式xml数据格式传给B系统,那么这样就有一个问题,在拼凑过程会遇到到转义字符,那么要去解决转义字符带来的问题,效率上也不高,代码看起来也很low.

2.实现序列化操作,这样做效率是最高的,代码美观,很有层次结构,维护也方便。

接下来就是对于xml序列化的操作,很方便,适合开发中使用,我已经做成工具类,方便调用与移植。

1.创建一个工具文件夹Utils,创建一个类文件XmlUtils.cs

类具体代码:

using System;
using System.Collections.Generic;
using System.IO;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.Xml.Serialization; namespace Myxs.Application.port.Utils
{
public static class XmlUtils
{
public static string Serialize<T>(this T obj, bool omitXmlDeclaration = false)
{
var sb = new StringBuilder();
using (var xw = XmlWriter.Create(sb, new XmlWriterSettings()
{
OmitXmlDeclaration = omitXmlDeclaration,
ConformanceLevel = ConformanceLevel.Auto,
Indent = true
}))
{
var xs = new XmlSerializer(obj.GetType());
xs.Serialize(xw, obj);
} return sb.ToString();
} }
}

  接下来就是创建XmlModels文件夹,创建createInfoXml.cs的类,这里是设置需要序列化的xml元素

using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Serialization; namespace Myxs.Application.port.XmlModels
{
[XmlRoot(ElementName = "apas_info")]
public class createInfoXml
{
[XmlElement(ElementName = "serviceid")]
public string Serviceid { get; set; }
[XmlElement(ElementName = "projectname")]
public string Projectname { get; set; }
[XmlElement(ElementName = "applyname")]
public string Applyname { get; set; }
[XmlElement(ElementName = "mobile")]
public string Mobile { get; set; }
[XmlElement(ElementName = "phone")]
public string Phone { get; set; }
[XmlElement(ElementName = "address")]
public string Address { get; set; }
[XmlElement(ElementName = "postcode")]
public string Postcode { get; set; }
[XmlElement(ElementName = "email")]
public string Email { get; set; }
[XmlElement(ElementName = "contactman")]
public string Contactman { get; set; }
[XmlElement(ElementName = "legalman")]
public string Legalman { get; set; }
[XmlElement(ElementName = "idcard")]
public string Idcard { get; set; }
[XmlElement(ElementName = "create_time")]
public string Create_time { get; set; }
[XmlElement(ElementName = "receive_time")]
public string Receive_time { get; set; }
}
}

  现在万事俱备只欠东风了。接下来就是使用工具类了,对xml进行序列化操作。

   

var model1 = new createInfoXml
{
Serviceid = entity.serviceid,
Projectname = entity.projectname,
Applyname = entity.applyname,
Mobile = entity.mobile,
Phone = entity.phone,
Address = entity.address,
Postcode = entity.postcode,
Email = entity.email,
Contactman = entity.contactman,
Legalman = entity.legalman,
Idcard = entity.idcard,
Create_time = entity.create_time,
Receive_time = entity.receive_time,
};

  后面是我创建的一个实体类,这个实体类可以自己创建,我就不在这里创建了。

调用工具类中的序列化方法

var dataxml = XmlUtils.Serialize(model1, true);

  第二参数为true的原因就是我只需要xml的数据,不行了xml的头文件,为true是为了去除xml头文件。

最终效果图如下:

<apas_info>
<serviceid>xx</serviceid> <projectname>xx</projectname> <applyname>xxx</applyname>
<mobile>xx</mobile>
.................
</apas_info>

  这就完成序列化操作了。

C#序列化xml,开发常用的更多相关文章

  1. 程序开发常用第三方类库一览表(VendorLib)

    以下是自己开发过程中用到的第三方类库,记录下来方便查阅 ------------------------------------------------------------------------ ...

  2. Sublime Text 前端开发常用扩展插件推荐

    Sublime Text 前端开发常用扩展插件推荐 Sublime Text Sublime Text 是程序员们公认的编码神奇,拥有漂亮的用户界面和强大的功能 更重要的是,Sublime Text ...

  3. J2EE开发常用开源框架技术(转)

    主要就我所了解的J2EE开发的框架或开源项目做个介绍,可以根据需求选用适当的开源组件进行开发.主要还是以Spring为核心,也总结了一些以前web开发常用的开源工具和开源类库 1持久层:1)Hiber ...

  4. 转发—Android开发常用的插件及工具

    作者:蓝之风 出处:http://www.cnblogs.com/vaiyanzi/ Android开发常用的插件及工具 1.GitHub,这个不管是做安卓还是其他,只要是开发就必上的网站,也是天朝没 ...

  5. WCF中序列化(XML\JSON\Dt)

    序列化 是将对象转换为容易传输的格式的过程.例如,可以序列化一个对象,然后使用 HTTP 通过 Internet 在客户端和服务器之间传输该对象.反之,反序列化根据流重新构造对象. 序列化描述了持久化 ...

  6. 开发常用镜像资源替换为国内开源镜像(yum,compose,maven,docker,android sdk,npm,国内开源镜像汇总)

    一.国内开源镜像站点汇总 阿里云开源镜像站 (http://mirrors.aliyun.com/)网易开源镜像站 (http://mirrors.163.com/)中国科学技术大学开源镜像站 (ht ...

  7. iOS:开发常用GitHub开源项目(持续更新)

    IOS开发常用GitHub开源项目(持续更新) 数据类 开源库 作者 简介 AFNetworking Mattt 网络请求库 ASIHTTPRequest pokeb 网络请求库 Alamofire ...

  8. iOS开发-常用第三方开源框架介绍

    iOS开发-常用第三方开源框架介绍 图像: 1.图片浏览控件MWPhotoBrowser        实现了一个照片浏览器类似 iOS 自带的相册应用,可显示来自手机的图片或者是网络图片,可自动从网 ...

  9. .net开发常用的第三方开发组件

    转自:http://www.cnblogs.com/damsoft/p/6100323.html .net开发常用的第三方组件: 1.RSS.NET.dll: RSS.NET是一款操作RSS feed ...

随机推荐

  1. photoshop画矩形款

    1.屏幕截图 2.在photoshop新建图形 3.用矩形选框 4.右键打开描边,宽度设成5个像素

  2. Android 中jar包封装及调用-转

    在android开发过程中,我们经常会有这种需求,自己开发一个类库jar包,提供给别人调用. 即把项目A封装成jar包,供项目B调用,而在项目B中调用项目A的activity的时候问题就出现了:找不到 ...

  3. Linux修复磁盘操作

    Linux修复磁盘操作 1.卸载分区 umount /data 修复磁盘,先判读是磁盘坏了,还是文件系统坏了:一般可以修复,但是建议换磁盘. 2.fsck  -y /dev/sda1  ##-y 参数 ...

  4. C# 判断程序是否已在运行

    方法一: Process[] processes = rocess.GetProcessesByName("ConDemo"); ) { MessageBox.Show(" ...

  5. saas服务提供商

    这段时间接触了不少行业的东西,这里谈几点肤浅的看法.从市场行情上讲,SaaS风口还在,不过热度明显向大数据.物联网.人工智能.区块链等转移. 做得比较好的有这些SaaS提供商,每个领域的都有那么几家的 ...

  6. ALTERA DDRII IP核使用

    提到DDRII,大家应该都不陌生,DDRII SDRAM是第二代双倍速率同步动态RAM.今天小编给大家介绍一下QUARTUS II 下调用DDRII软核. 新建QUARTUSII工程之后,在tool下 ...

  7. java代码求输入数的平均值~~~~

    总结:1.谢谢程老师,一个很好的老师,人很普通,但是浑浊的世界里,那一份真实感动到底~~~~很感谢他 2.这里注意两个方面,也是我最大的弱点:循环和数组的length属性.前者运用不灵活,后者自己总是 ...

  8. 转:oracle几组重要的常见视图-v$process,v$session,v$session_wait,v$session_event

    v$process 本视图包含当前系统oracle运行的所有进程信息.常被用于将oracle或服务进程的操作系统进程ID与数据库session之间建立联系.在某些情况下非常有用: 1 如果数据库瓶颈是 ...

  9. 使用QuartZ.net来做定时计划任务 ; 值不能为 null。 参数名: assemblyString

    1. 当异常的时候, 发现需要的类名, 没有取到, 然后就发生异常了 2. 分析: 业务层调用数据层, 数据层去掉配置的时候, 发现配置文件中根本就没有配置, 这个时候使用反射来取, 肯定是拿不到的, ...

  10. 解决:An internal error occurred during: "Launching New_configuration". Path for project must have only one segment.

    问题: 点击运行时eclipse报错如下: An internal error occurred during: "Launching New_configuration". Pa ...