Опубликован: 02.08.2013 | Доступ: свободный | Студентов: 464 / 17 | Длительность: 18:38:00
Специальности: Программист
Теги:
Самостоятельная работа 7:
Работа с JSON, XML, сжатие данных
В Листинге 27.2 приведен полный код файла MainPage.xaml.cs
using Ionic.Zlib; using Microsoft.Phone.Controls; using System; using System.IO; using System.Runtime.Serialization.Json; using System.Windows; using System.Xml.Serialization; namespace P7_1 { public partial class MainPage : PhoneApplicationPage { // Конструктор public MainPage() { InitializeComponent(); } private void cmd_SerializationXML_Click(object sender, RoutedEventArgs e) { //Объект для сериализации ForSerialization ObjectForSerialization = new ForSerialization(); //Тип данных для сериализации Type t = typeof(ForSerialization); //XML-сериализатор для объекта XmlSerializer XmlS = new XmlSerializer(t); //Поток для хранения результатов сериализации MemoryStream XmlStr = new MemoryStream(); //Сериализация в поток XmlS.Serialize(XmlStr, ObjectForSerialization); //Подготовка к чтению данных из потока XmlStr.Position = 0; //Средство считывания потока StreamReader StRead = new StreamReader(XmlStr); //Строка в которую считывается поток string XmlString = StRead.ReadToEnd(); //Вывод строки MessageBox.Show(XmlString); //Десериализация XmlSerializer XmlDS = new XmlSerializer(t); //Подготовка потока XmlStr.Position = 0; //Создаём объект из сериализованных данных ForSerialization NewObjectFromXML = XmlDS.Deserialize(XmlStr) as ForSerialization; MessageBox.Show("Десериализация завершена"); } private void cmd_SerializationJSON_Click(object sender, RoutedEventArgs e) { //Объект для сериализации ForSerialization ObjectForSerialization = new ForSerialization(); //Тип данных для сериализации Type t = typeof(ForSerialization); //JSON-сериализатор DataContractJsonSerializer JsS = new DataContractJsonSerializer(t); //Поток для хранения результатов сериализации MemoryStream JsonStr = new MemoryStream(); JsS.WriteObject(JsonStr, ObjectForSerialization); //Подготовка к чтению данных из потока JsonStr.Position = 0; //Средство считывания потока StreamReader StRead = new StreamReader(JsonStr); //Строка в которую считывается поток string JsonString = StRead.ReadToEnd(); //Вывод строки MessageBox.Show(JsonString); //Десериализация DataContractJsonSerializer JsDS = new DataContractJsonSerializer(t); //Подготовка потока JsonStr.Position = 0; //Создаём объект из сериализованных данных ForSerialization NewObjectFromJSON = JsDS.ReadObject(JsonStr) as ForSerialization; MessageBox.Show("Десериализация завершена"); } private void cmd_Compression_Click(object sender, RoutedEventArgs e) { string DataForCompression = "Данные для сжатия 1 Данные для сжатия 2 Данные для сжатия 3"; //Строка для сжатия, записанная в массив байтов Byte[] BytesFromString = System.Text.Encoding.UTF8.GetBytes(DataForCompression); //Новый массив, содержащий сжатую строку byte[] CompressedData = GZipStream.CompressString(DataForCompression); //Строка, восстановленная из сжатых данных string Uncompressed = GZipStream.UncompressString(CompressedData); MessageBox.Show("Размеры байтовых массивов. Для исходной строки: " + BytesFromString.Length.ToString() + " байт. При сжатии: " + CompressedData.Length.ToString() + " байт"); MessageBox.Show("Исходная строка: (" + DataForCompression + "), строка, полученная после сжатия и распаковки: (" + Uncompressed + ")."); } } }Листинг 27.2. Код файла MainPage.xaml.cs