C#对象序列化操作:

public class XMLHelper
{
/// <summary>
/// 对象序列化成 XML String
/// </summary>
public static string XmlSerialize<T>(T obj)
{
string xmlString = string.Empty;
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
//using (TextWriter textWriter = new StreamWriter("D:\\xmlTest.xml"))
//{
// xmlSerializer.Serialize(textWriter, obj);
//}
using (MemoryStream ms = new MemoryStream())
{
xmlSerializer.Serialize(ms, obj);
xmlString = Encoding.UTF8.GetString(ms.ToArray());
}
return xmlString;
} /// <summary>
/// XML String 反序列化成对象
/// </summary>
public static T XmlDeserialize<T>(string xmlString)
{
T t = default(T);
XmlSerializer xmlSerializer = new XmlSerializer(typeof(T));
using (Stream xmlStream = new MemoryStream(Encoding.UTF8.GetBytes(xmlString)))
{
using (XmlReader xmlReader = XmlReader.Create(xmlStream))
{
Object obj = xmlSerializer.Deserialize(xmlReader);
t = (T)obj;
}
}
return t;
} }

示例:

[Serializable]
[XmlType(TypeName = "MySong")]
public class Song
{
[XmlElement("A")]
public string Artist;
[XmlElement("S")]
public string SongTitle;
} class XMLDemo
{
static void Main(string[] args)
{
List<Song> list = new List<Song>()
{
new Song(){ SongTitle="歌曲标题1",Artist="歌手1"},
new Song(){ SongTitle="歌曲标题2",Artist="歌手2"},
new Song(){ SongTitle="歌曲标题3",Artist="歌手3"}
};
string xmlString = XMLHelper.XmlSerialize(list);
/*<?xml version="1.0"?>
<ArrayOfSong xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<Song>
<Artist>歌手1</Artist>
<SongTitle>歌曲标题1</SongTitle>
</Song>
<Song>
<Artist>歌手2</Artist>
<SongTitle>歌曲标题2</SongTitle>
</Song>
<Song>
<Artist>歌手3</Artist>
<SongTitle>歌曲标题3</SongTitle>
</Song>
</ArrayOfSong> // 自定义标签名
<?xml version="1.0"?>
<ArrayOfMySong xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<MySong>
<A>歌手1</A>
<S>歌曲标题1</S>
</MySong>
<MySong>
<A>歌手2</A>
<S>歌曲标题2</S>
</MySong>
<MySong>
<A>歌手3</A>
<S>歌曲标题3</S>
</MySong>
</ArrayOfMySong>
*/
Console.WriteLine(xmlString);
}
}

C#对象序列化成XML,以及自定义标签名的更多相关文章

  1. XmlSerializer 对象序列化成XML 自定义编码格式(gb2312)

    随着面向服务(SOA)的开发方式的兴起,客户端和服务端之间的消息传送,很多采用了XML的格式.但是大家在日常的开发中,应该会有这么种体验,就是组织xml格式的代码太繁琐,这篇随笔也是为了和大家分享下简 ...

  2. 将对象序列化成XML字符串

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...

  3. 将Java对象序列化成JSON和XML格式

    1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...

  4. C#将对象序列化成JSON字符串

    C#将对象序列化成JSON字符串 public string GetJsonString() { List<Product> products = new List<Product& ...

  5. 匿名对象序列化为XML

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...

  6. .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程

    JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询 ...

  7. 对象序列化成Json字符串 及 反序列化成对象

    一. public static string JsonSerializer<T>(T t)        {            DataContractJsonSerializer ...

  8. ObjC 利用反射和KVC实现嵌套对象序列化成JSON数据

    原理: 0.创建一个新的可变字典:NSMutableDictionary 1.采用class_copyPropertyList函数遍历对象的属性 2.property_getName获取属性名,val ...

  9. .NET 序列化成XML, 并且格式化

    现有Person类: [Serializable] public class Person { public string Name; public string Info; public Perso ...

随机推荐

  1. 一款可视化的在线制作H5

    一款可视化的在线制作H5 官方网站: http://www.iii66.cn 制作H5网址: http://www.iii66.cn/love/page/index 包括对图片,文字,图形,视频,声音 ...

  2. Java泛型知识点全方位总结

    前言 我一直认为泛型是编程语言设计中一个非常基本和重要的概念.Java中的泛型是什么?他们为什么在那里?他们是如何发展的?在学习基础知识时,对仿制药的透彻理解是非常重要的.因此,我阅读了<Jav ...

  3. Linux下的awk文本分析命令详解

    一.简介 awk是一种编程语言,用于在linux/unix下对文本和数据进行处理.数据可以来自标准输入.一个或多个文件,或其它命令的输出.它支持用户自定义函数和动态正则表达式等先进功能,是linux/ ...

  4. R 540

    好久没写题解了嘻嘻嘻,昨天补edu自闭了一天还没补完fg这div3令人愉悦. A: #include <bits/stdc++.h> #define mk(a,b) make_pair(a ...

  5. 腾讯地图打开地图选取位置 withMap

    https://lbs.qq.com/tool/component-picker.html withMap import React, { Component } from "react&q ...

  6. [Educational Round 3][Codeforces 609E. Minimum spanning tree for each edge]

    这题本来是想放在educational round 3的题解里的,但觉得很有意思就单独拿出来写了 题目链接:609E - Minimum spanning tree for each edge 题目大 ...

  7. javascript 获取多种主流浏览器显示页面高度(转)

    IE中:document.body.clientWidth ==> BODY对象宽度document.body.clientHeight ==> BODY对象高度document.docu ...

  8. Listen error 错误和 limit of inotify watches was reached

    今天在生产环境中报错rails c中报了一个错误: FATAL: Listen error: unable to monitor directories for changes. Visit http ...

  9. 剑指offer——python【第29题】最小的K个数

    题目描述 输入n个整数,找出其中最小的K个数.例如输入4,5,1,6,2,7,3,8这8个数字,则最小的4个数字是1,2,3,4,. 思路 先排序后取数,排序可以用冒泡,插入,选择,快排,二分法等等, ...

  10. 再读vue2.0

    玩过一段时间后在来读读vue2.0会发现受益良多 概述: vue2.0 是一套构建用户界面的渐进式框架, 使用virtual DOM  提供了响应式和组件化, 允许使用简介的模板语法来声明式的将数据渲 ...