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);
}
}

最新文章

  1. Android MVP 利用rxjava 避免向Model传入监听方法
  2. 3.多线程NSOperation
  3. ASP.NET权限管理
  4. NIO 连接
  5. 第三章 centos安装git
  6. 网络安全&amp;信息安全&amp;系统安全常用名词汇总
  7. UML类图五种关系与代码的对应关系
  8. ETL工具与脚本实现之间的对比
  9. 关于@Html.Action()的异常“控制器或该控制器未实现 IController。”
  10. javascript中apply()方法解析-简单易懂!
  11. React/React Native 的ES5 ES6写法对照表
  12. [Android Studio] Android studio 多渠道打包(超简洁版)
  13. extjs 常见的小问题
  14. key 限制字符的输入
  15. JDK动态代理例子
  16. Youtube最佳Red5 官方视频下载指南,字幕【亲测成功】
  17. POJ 3259 Wormholes(SPFA+邻接表)
  18. 小程序的1024KB
  19. xxe漏洞的学习与利用总结
  20. Android开发基础规范(一)

热门文章

  1. 【静默】在RHEL 6.5上静默安装Oracle 18c
  2. 10.Oracle Golden Date(ogg)的搭建和管理
  3. python目录遍历文件名称替换
  4. jstat命令详解
  5. Cocoapods 创建自己的公开库、私有库
  6. iOS - 跳转到系统设置
  7. fastadmin 使用记录
  8. easywechat (在thinkphp5中使用easywechat完成微信网页认证)
  9. 15:CSS3 3D
  10. asp.net session锁导致ajax请求阻塞