2012-05-19

Articles

Serializer

 

The serializer provides fast methods for serialize or deserialize a stored XML file to and from an object.

 

 

Usage

<UserControl x:Class="DW.SharpTools.Demo.SerializerControl"
			 xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
			 xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
			 xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" 
			 xmlns:d="http://schemas.microsoft.com/expression/blend/2008" 
			 mc:Ignorable="d" 
			 d:DesignHeight="300" d:DesignWidth="300">
	<DockPanel Margin="5">
		<StackPanel Orientation="Horizontal" DockPanel.Dock="Bottom" HorizontalAlignment="Center">
			<Button Content="Serialize" Click="Serialize_Click" />
			<Button Content="Deserialize" Click="Deserialize_Click" />
		</StackPanel>
		<TextBox Margin="0,0,0,5" x:Name="xmlDocument" IsReadOnly="True" />
	</DockPanel>
</UserControl>
using System.Windows;
using System.Windows.Controls;
using Microsoft.Win32;

namespace DW.SharpTools.Demo
{
	public partial class SerializerControl : UserControl
	{
		public SerializerControl()
		{
			InitializeComponent();

			xmlDocument.Text = GetXml();
		}

		private static string GetXml()
		{
			return "<?xml version=\"1.0\" encoding=\"utf-16\"?>\n" +
					"<Libraries xmlns:xsi=\"http://www.w3.org/2001/XMLSchema-instance\"\n" +
					"           xmlns:xsd=\"http://www.w3.org/2001/XMLSchema\">\n" +
					"    <Name>David W</Name>\n" +
					"    <Website>www.my-libraries.de</Website>\n" +
					"</Libraries>";
		}

		private void Serialize_Click(object sender, RoutedEventArgs e)
		{
			var data = new Data();
			data.Name = "David W";
			data.Website = "www.my-libraries.de";

			var saveFileDialog = new SaveFileDialog { Filter = "XML File (*.xml)|*.xml" };
			if (saveFileDialog.ShowDialog() == true)
				XmlTools.Serializer.Serialize(data, saveFileDialog.FileName);
		}

		private void Deserialize_Click(object sender, RoutedEventArgs e)
		{
			var openFileDialog = new OpenFileDialog { Filter = "XML File (*.xml)|*.xml" };
			if (openFileDialog.ShowDialog() == true)
			{
				var data = XmlTools.Serializer.Deserialize<Data>(openFileDialog.FileName);
			}
		}
	}
}
using System.Xml.Serialization;

namespace DW.XmlTools.Demo
{
	[XmlRoot("Libraries")]
	public class Data
	{
		[XmlElement]
		public string Name { get; set; }

		[XmlElement]
		public string Website { get; set; }
	}
}