Windows Phone 7 序列化Serialization: XmlSerializer
来源:互联网 发布:秦美人骑兵进阶数据 编辑:程序博客网 时间:2024/05/22 20:55
转自:http://www.devdiv.com/thread-56865-1-1.html
Currently I am looking for the best solution for object serialization in Windows Phone 7 environment. I will begin my quest with XML Serialization using XmlSerializer Class (popular solution in Silverlight). In this post I will show how to serialize and deserialize objects using XmlSerializer, later I will try to compare several ways of serialization to find out which one is the best.
Additional Information
- XmlSerializer Class
- XML Serialization in the .NET Framework
Creating a sample class
I have created special SampleData class to be serialized and deserialized. It is a very simple class containing only two properties and a constructor declaration for filling down both properties (check code bellow). To control XML generation for a class you can use XmlAttribute, XmlElement, etc. Pay attention that only public properties can be serialized. More information about XML-generation can be foundhere andhere (MSDN website).
- public class SampleData
- {
- [XmlElement]
- public string ContentText { get; set; }
- [XmlElement]
- public List<int> SomeItems { get; set; }
- public SampleData()
- {
- ContentText = "some text";
- SomeItems = new List<int>() { 1, 2, 3 };
- }
- }
SerializationBoth serialization and deserialization processes are very easy to implement. For both operations you will need to create an instance of XmlSerializer class and pass it a type of object for serialization. In addition for serialization you will need a stream object to hold serialized object. To serialize an object simply call Serialize method of XmlSerializer instance. I have created the following method for serialization:
- public static void Serialize(Stream streamObject, object objForSerialization)
- {
- if (objForSerialization == null || streamObject == null)
- return;
- XmlSerializer serializer = new XmlSerializer(objForSerialization.GetType());
- serializer.Serialize(streamObject, objForSerialization);
- }
- Class for serialization must be public
- Class member for serialization must be public
- Parameterless constructor for a class
- public static object Deserialize(Stream streamObject, Type serializedObjectType)
- {
- if (serializedObjectType == null || streamObject == null)
- return null;
- XmlSerializer serializer = new XmlSerializer(serializedObjectType);
- return serializer.Deserialize(streamObject);
- }
- public static void TestXMLSerialization()
- {
- // serialization
- MemoryStream ms = new MemoryStream();
- XMLSerializerHelper.Serialize(ms, new SampleData());
- ms.Position = 0;
- // deserialization
- var sampleData = XMLSerializerHelper.Deserialize(ms, typeof(SampleData));
- ms.Close();
- }
- <?xml version="1.0"?>
- <SampleData xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:xsd="http://www.w3.org/2001/XMLSchema">
- <ContentText>some text</ContentText>
- <SomeItems>1</SomeItems>
- <SomeItems>2</SomeItems>
- <SomeItems>3</SomeItems>
- </SampleData>
- Windows Phone 7 序列化Serialization: XmlSerializer
- Windows Phone 7 序列化Serialization: XmlSerializer
- Windows Phone 7 Serialization: Binary Serialization
- Windows Phone 7 Serialization: DataContract Serialization
- XmlSerializer 序列化
- c# xmlserializer 序列化
- XmlSerializer序列化
- windows phone:通过XmlSerializer读写XML文件
- 使用XmlSerializer进行序列化
- 浅谈序列化之 XmlSerializer
- XmlSerializer序列化XML文件
- Serialization(序列化) 示例
- Serialization序列化
- 序列化 (serialization)
- 序列化 (serialization)
- 序列化 (serialization)
- Java Serialization 序列化
- Boost - 序列化 (Serialization)
- 事物隔离的3种预防
- 关于MACHINE_START (机器信息)
- hdu 2114 Calculate S(n)
- 将数组元素当作函数的实参,调用函数将数组的每个元素值转换为它对应的字符
- 黑马程序员-----网络编程学习日志
- Windows Phone 7 序列化Serialization: XmlSerializer
- WPF 后台给控件添加样式
- Fixing "The following VMware kernal modules have been found on your system that were not installed b
- Android捕获全局异常信息并实现上传 .
- [Android]ListView中分割线的设置
- Linux下安装VMware虚拟机的过程详解
- C++课堂总结
- js截取
- 流水线技术原理和Verilog HDL实现