C#对象序列化成XML,以及自定义标签名
2014-09-12 12:02
375 查看
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# XmlSerializer将对象序列化以及反序列化(Sqlite数据库)
- [c#]Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
- 在asp.net(C#)中采用自定义标签和XML、XSL显示数据
- C#温故而知新学习系列之XML编程—5-XmlSerializer类把对象序列化为XML文档
- C#序列化XML至对象
- C#温故而知新学习系列之XML编程—8-XMLSerializer类把XML文档反序列化为对象
- [c#]Webservice中如何实现方法重载(overload)以及如何传送不能序列化的对象作参数
- C#对象序列化XML时报错:反射类型XXX时出错
- C#温故而知新学习系列之XML编程—XmlSerializer类把复杂对象序列化为XML文档(六)
- c#中将对象序列化为xml(包括list)
- C#中的对象序列化成文本和XML案例
- C#中对象集合XML的序列化与反序列化
- C#序列化对象为XMl于反序列化
- C#温故而知新学习系列之XML编程—6-XmlSerializer类把复杂对象序列化为XML文档
- C#对象的 Xml序列化与反序列化
- AJAX JSON中日期类型DateTime格式化的序列化自定义对象以及自定义类型参数的问题处理
- c# 对象序列化为XML
- C# 将对象序列化为XML
- C#对象XML序列化(一):序列化方法和常用特性
- C#温故而知新学习系列之XML编程—XMLSerializer类把XML文档反序列化为对象(八)