<经验杂谈>C#/.Net中xml的Serialization序列化与DeSerializetion反序列化

1.先讲概念:.Net Framework提供了对应的System.Xml.Seriazliation.XmlSerializer负责把对象序列化到XML,和从XML中反序列化为对象。Serializer的使用比较直观,需要多注意的是XML序列化相关的Attribute,怎么把这些attribute应用到我们的对象,以及对象公共属性上面去,生成满足预期格式的XML。
  本文列出了最常用的方法和特性,涵盖日常大部分的转换工作,希望大家在工作中快速上手。为了给大家直观的印象,这里给出具体的使用代码,为了节省篇幅,代码异常处理没有添加,各位程序师们使用的时候酌情添加。

2.上代码:

        /// <summary>
        /// xml序列化
        /// </summary>
        /// <param name="obj">实体对象</param>
        /// <returns>返回不带命名空间的xml字符串</returns>
        public static string ObjectToXml(object obj)
        {
            string msg;
            var xml = new XmlSerializer(obj.GetType());
            var stream = new MemoryStream();
            var n = new XmlSerializerNamespaces();
            n.Add(string.Empty, string.Empty);
            xml.Serialize(stream, obj, n);
            stream.Position = 0;
            using (var reader = new StreamReader(stream))
            {
                msg = reader.ReadToEnd();
                stream.Close();
            }
            return msg;
        }

        /// <summary>
        /// xml反序列化
        /// </summary>
        /// <param name="xml">xml字符串</param>
        /// <param name="objType">对象类型</param>
        /// <returns></returns>
        public static object XmlToObject(string xml, Type objType)
        {
            object obj;
            if (string.IsNullOrWhiteSpace(xml)) return null;
            using (var reader = new StringReader(xml))
            {
                var ser = new XmlSerializer(objType);
                obj = ser.Deserialize(reader);
                reader.Close();
            }
            return obj;
        }

这里主要讲了Xml Serializer的用法,C#类和Xml之间的结构映射,希望足够程序师们对付日常工作。

时间: 2024-10-24 19:19:46

<经验杂谈>C#/.Net中xml的Serialization序列化与DeSerializetion反序列化的相关文章

Android中XML文件的序列化生成与解析

首先,我把Person的实体类 package net.loonggg.test; public class Person { private int id; private String age; private String name; private String sex; private String address; public int getId() { return id; } public void setId(int id) { this.id = id; } public

负能量程序员杂谈(2)- 管理中的情和义

本系列文章仅从个人有限的对事物的认知出发,如有不同意见,请温和提出态度,毕竟都是成年人,别那么幼稚. 情和义,值千金. 今天和很久没见的朋友L喝酒,L目前是一家不错公司的开发管理,手下10几号开发.中途他给我聊了一个很有意思的话题:公司正在转型,那么由于成本压缩控制会裁掉一些人,由于担心裁人会引发和公司矛盾,所以这种事交于开发小组的小组长负责沟通,有的小组长碍于情面,觉得不好意思落下脸面,他就出马负责和即将被裁掉的程序员沟通.我问他为什么不是HR去搞定这个事呢?他告诉我,之前发生过因为HR去沟通

spring管理SessionFactory中XML配置

1. 综合练习目标 2. 综合练习需求 3.模块划分 1. 综合练习目标 <1>复习 Java 基本语法 <2>熟悉掌握Java开发常用API <3>尝试建立面向对象思想 2. 综合练习需求 <1>接收用户的命令行输入 <2>以文件为基础完成数据的增删改查操作          3.模块划分 UI模块:(Java存在文本中都是以字符型式) 数据验证模块:验证用户输入是否合法 spring管理SessionFactory中XML配置,布布扣,bub

Android中XML数据解析

转载请注明出处:http://blog.csdn.net/yegongheng/article/details/38296207 XML初步 今天我们来学习另一种非常重要的数据交换格式-XML.XML(Extensible Markup Language的缩写,意为可扩展的标记语言),它是一种元标记语言,即定义了用于定义其他特定领域有关语义的.结构化的标记语言,这些标记语言将文档分成许多部件并对这些部件加以标识.XML 文档定义方式有:文档类型定义(DTD)和XML Schema.DTD定义了文

ASP.NET中XML转JSON的方法

原文:ASP.NET中XML转JSON的方法 许多应用程序都将数据存储为XML的格式,而且会将数据以JSON的格式发送到客户端以做进一步处理.要实现这一点,它们必须将XML格式转换为JSON格式. XML转JSON代码 [csharp] view plaincopy private static string XmlToJSON(XmlDocument xmlDoc) { StringBuilder sbJSON = new StringBuilder(); sbJSON.Append("{ &

【IOS】AFNetworking 2.0中XML请求处理专题

AFNetworking 2.0中XML请求处理专题 1.1     XML请求处理 1.1.1  xml处理机制 因为AFNetworking2.0中,对于响应返回的xml格式没有做专门的解析处理,因此需要开发者自己来做处理.在笔者的项目中,使用了一个叫AFGDataXMLRequestOperation的第三方类库来统一处理. 该库的xml解析逻辑基于GDataXML-HTML类库.不过类库处理逻辑应该还是基于AFNetworking 1.0版本,有两处需要做适配修改,不然调试不过: 1.在

C# 将XML格式字符串,写入数据集的表中 XML解析

将XML格式字符串,写入数据集的表1中 命名空间:using System.Xml; string strRead;//strRead为以下xml值 XmlDocument xd = new XmlDocument(); xd.LoadXml(strRead); XmlNodeList nodeList = xd.SelectSingleNode("root").ChildNodes;//获取bookstore节点的所有子节点 foreach (XmlNode xn in nodeLi

kbmmw 中XML 操作入门(跨平台,而且可以与JSON,YAML,BSON 直接互相转换)

delphi 很早以前就自带了xml 的操作,最新版里面有三种XML 解释器,一种是MSXML,看名字就知道 这个是微软自带的,这个据delphi 官方称是速度是最快的,但是只能在windows 上使用.另外两个是 OmniXML, ADOM, 这两个都是跨平台的.但是速度比MSXML 慢点.在delphi 10.2 里面,WINDOWS 应用默认使用MSXML, linux 应用默认使用OmniXML. 当然也可以通过强行改变 今天我们讲一下如何使用kbmmw 内置的XML 解释器处理XML

Asp.net中XML与DataSet、DataTable之间的转换

using System; using System.Collections.Generic; using System.Text; using System.Data; using System.Xml; using System.IO; using System.Web; namespace Utility { /// <summary> /// 把DataSet.DataTable.DataView格式转换成XML字符串.XML文件 /// </summary> public