C#对象序列化成XML,以及自定义标签名
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,以及自定义标签名的更多相关文章
- XmlSerializer 对象序列化成XML 自定义编码格式(gb2312)
随着面向服务(SOA)的开发方式的兴起,客户端和服务端之间的消息传送,很多采用了XML的格式.但是大家在日常的开发中,应该会有这么种体验,就是组织xml格式的代码太繁琐,这篇随笔也是为了和大家分享下简 ...
- 将对象序列化成XML字符串
using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.We ...
- 将Java对象序列化成JSON和XML格式
1.先定义一个Java对象Person: public class Person { String name; int age; int number; public String getName() ...
- C#将对象序列化成JSON字符串
C#将对象序列化成JSON字符串 public string GetJsonString() { List<Product> products = new List<Product& ...
- 匿名对象序列化为XML
using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.X ...
- .Net使用Newtonsoft.Json.dll(JSON.NET)对象序列化成json、反序列化json示例教程
JSON作为一种轻量级的数据交换格式,简单灵活,被很多系统用来数据交互,作为一名.NET开发人员,JSON.NET无疑是最好的序列化框架,支持XML和JSON序列化,高性能,免费开源,支持LINQ查询 ...
- 对象序列化成Json字符串 及 反序列化成对象
一. public static string JsonSerializer<T>(T t) { DataContractJsonSerializer ...
- ObjC 利用反射和KVC实现嵌套对象序列化成JSON数据
原理: 0.创建一个新的可变字典:NSMutableDictionary 1.采用class_copyPropertyList函数遍历对象的属性 2.property_getName获取属性名,val ...
- .NET 序列化成XML, 并且格式化
现有Person类: [Serializable] public class Person { public string Name; public string Info; public Perso ...
随机推荐
- 【12c】12c RMAN新特性之通过网络远程恢复数据库(RESTORE/Recover from Service)
[12c]12c RMAN新特性之通过网络远程恢复数据库(RESTORE/Recover from Service) 通过网络远程恢复数据库(Restore/Recover from Service) ...
- java Illegal unquoted character ((CTRL-CHAR, code X)): has to be escaped using backslash to be included in string value
今天在同步日志到ES的时候出现转换Json后 存到es中报这个错. Illegal unquoted character ((CTRL-CHAR, code X)): has to be escape ...
- linux下tar命令的常用实例
语法:tar [主选项+辅选项] 文件或者目录 使用该命令时,主选项是必须要有的,它告诉tar要做什么事情,辅选项是辅助使用的,可以选用. 主选项:c 创建新的档案文件.如果用户想备份一个目录或是一些 ...
- JavaSE 可变参数的方法重载
/** * 可变参数的方法重载 */ class A { public void test(int a, int b) { System.out.println(a+", "+b) ...
- redis操作封装类
class Redis { // 默认配置名称(使用load_config加载) private $_default_config_path = 'package/cache/redis'; ...
- JAVA课程之简易课程登记
实现技术JSP+Servlet+MySQL 思想:首先前台用jsp获取数据,然后用Form表单传值给Servlet,Servlet操作MySQL,获取数据再通过jsp显示 1.jsp功能选择界面 &l ...
- 15:CSS3 3D
15:CSS3 3D 什么是3d的场景呢? 2d场景,在屏幕上水平和垂直的交叉线x轴和y轴 3d场景,在垂直于屏幕的方法,相对于3d多出个z轴 Z轴:靠近屏幕的方向是正向,远离屏幕的方向是反向 CSS ...
- Android 函数
inflate: https://blog.csdn.net/u012702547/article/details/52628453 public View inflate(XmlPullParser ...
- 解决在Windows10没有修改hosts文件权限
当遇到有hosts文件不会编辑或者,修改了没办法保存”,以及需要权限等问题如图: 我学了一招,先在交给你: 1.win+R 2.进入hosts的文件所在目录: 3.我们开始如何操作才能不出现权限问题那 ...
- python全栈开发 * 19 面向对象 知识点汇总 * 180701
19 面向对象初识2 一.类的名称空间1.对象的名称空间对象的名称空间中有类对象指针,对象可以通过"类对象指针"找类中的"静态变量"(静态字段),也可以用对象找 ...