Introduction
In this article we are
going to discuss how to store a value in a XML file which will be saved as
isolated storage in Windows Phone 7 and if we want to read the XML then we can
read it easily. Further we need to create a XML file; for it we are using three textboxes whose value will be saved in the XML file and will be
retrieved from the XML file whenever we will click on the button. It's all inside
the isolated storage of the Windows Phone 7. Further The
System.IO.IsolatedStorage namespace contains types that allow the
creation and use of isolated stores. Further with these stores, you can read and
write data that less trusted code cannot access and prevent the exposure of
sensitive information that can be saved elsewhere on the file system. In such
type of storage, data is stored in compartments that are isolated by the current
user and by the assembly in which the code exists. Additionally, data can be
isolated by domain. Roaming profiles can be used in conjunction with isolated
storage so isolated stores will travel with the user's profile. Further you have
to follow the steps given below to implement such functionality.
Step 1: In this step we have to take a
new Windows Phone application
- Go to New-->Project
- Select template Silverlight for Windows
Phone
- Choose a Windows Phone application
Step 2: In this step we have to see the
code one by one first of all we will make some properties which is inside a
class named person given below:
Code
public
class Person
{
string f_name;
string l_name;
int age;
public
string F_Name
{
get {
return f_name; }
set { f_name =
value; }
}
public
string LastName
{
get {
return l_name; }
set { l_name =
value; }
}
public int
Age
{
get {
return age; }
set { age =
value; }
}
}
Step 3: In this step
we will write the code for List<person>; let us see how we will write that.
Code
private
List<Person>
G_P_Data()
{
List<Person>
l1 = new List<Person>();
Person p = new
Person();
p.F_Name = textBox1.Text;
p.L_Name = textBox2.Text;
p.Age = Convert.ToInt32(textBox3.Text);
l1.Add(p);
return l1;
}
Step 4: In this step we
will write the code for the button click to save the record.
Code
private
void btnSave_Click(object
sender, RoutedEventArgs e)
{
// Write to the Isolated Storage
XmlWriterSettings
x_W_Settings = new
XmlWriterSettings();
x_W_Settings.Indent = true;
using (IsolatedStorageFile
ISF = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream
stream = ISF.OpenFile("People.xml",
FileMode.Create))
{
XmlSerializer
serializer = new XmlSerializer(typeof(List<Person>));
using (XmlWriter
xmlWriter = XmlWriter.Create(stream,
x_W_Settings))
{
serializer.Serialize(xmlWriter,
GeneratePersonData());
MessageBox.Show("Data
Save!!!!");
}
}
}
}
Step 5: In this step
we will write code for reading from the isolated storage which is given
below:
Code
private
void btnRead_Click(object
sender, RoutedEventArgs e)
{
try
{
using (IsolatedStorageFile
ISF = IsolatedStorageFile.GetUserStoreForApplication())
{
using(IsolatedStorageFileStream
str = ISF.OpenFile("People.xml",
FileMode.Open))
{
XmlSerializer
serializer = new XmlSerializer(typeof(List<Person>));
List<Person>
l1 = (List<Person>)serializer.Deserialize(str);
this.listBox.ItemsSource
= l1;
}
}
}
catch
{
//add some code here
}
}
Step 6: In this step we
will write the XAML code for the application MainPage.xaml:
Code
<phone:PhoneApplicationPage
x:Class="WP7Sample.MainPage"
xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"
xmlns:x="http://schemas.microsoft.com/winfx/2006/xaml"
xmlns:phone="clr-namespace:Microsoft.Phone.Controls;assembly=Microsoft.Phone"
xmlns:shell="clr-namespace:Microsoft.Phone.Shell;assembly=Microsoft.Phone"
xmlns:d="http://schemas.microsoft.com/expression/blend/2008"
xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006"
mc:Ignorable="d"
d:DesignWidth="480"
d:DesignHeight="768"
FontFamily="{StaticResource
PhoneFontFamilyNormal}"
FontSize="{StaticResource
PhoneFontSizeNormal}"
Foreground="{StaticResource
PhoneForegroundBrush}"
SupportedOrientations="Portrait"
Orientation="Portrait"
shell:SystemTray.IsVisible="True">
<!--LayoutRoot
is the root grid where all page content is placed-->
<Grid
x:Name="LayoutRoot"
Background="Transparent">
<Grid.RowDefinitions>
<RowDefinition
Height="Auto"/>
<RowDefinition
Height="*"/>
</Grid.RowDefinitions>
<!--TitlePanel contains the name of the application and page
title-->
<StackPanel
x:Name="TitlePanel"
Grid.Row="0"
Margin="12,17,0,28">
<TextBlock
x:Name="ApplicationTitle"
Text="MY
APPLICATION"
Style="{StaticResource
PhoneTextNormalStyle}"
FontFamily="Comic
Sans MS"
FontSize="28"
/>
<TextBlock
x:Name="PageTitle"
Text="My
app"
Margin="9,-7,0,0"
Style="{StaticResource
PhoneTextTitle1Style}"
FontFamily="Comic
Sans MS"
FontSize="72"
Foreground="#FFBFE57E"
/>
</StackPanel>
<!--ContentPanel - place additional content here-->
<StackPanel
x:Name="ContentPanel"
Grid.Row="1"
Margin="12,0,12,0"
Background="#FF2B1608">
<ListBox
x:Name="listBox">
<ListBox.ItemTemplate>
<DataTemplate>
<StackPanel
Margin="10"
>
<TextBlock
Text="{Binding
F_Name}"/>
<TextBlock
Text="{Binding
L_Name}"/>
<TextBlock
Text="{Binding
Age}"/>
</StackPanel>
</DataTemplate>
</ListBox.ItemTemplate>
</ListBox>
<TextBlock
x:Name="tbx"/>
<TextBox
Height="72"
Name="textBox1"
Text="Enter
First Name"
Width="460"
FontFamily="Comic
Sans MS"
FontSize="28"
Foreground="#FF1E55D1"
/>
<TextBox
Height="72"
Name="textBox2"
Text="Enter
Last Name"
Width="460"
FontFamily="Comic
Sans MS"
FontSize="28"
Foreground="#FF2756BE"
/>
<TextBox
Height="72"
Name="textBox3"
Text="Enter
Id"
Width="460"
FontFamily="Comic
Sans MS"
FontSize="28"
Foreground="#FF3B65C1"
/>
<Button
Content="Save
Textbox Value in XML"
x:Name="btnSave"
Click="btnSave_Click"
Background="#00C12D9E"
Foreground="#FF59965E"
BorderBrush="#FFF5F542"
/>
<Button
Content="Read
XML"
x:Name="btnRead"
Click="btnRead_Click"
BorderBrush="#FFEB8ED3"
Foreground="#FFE0FF2E"
/>
<Button
Content="Save
XML without serializer"
x:Name="btnSaveWithoutSerielizer"
Click="btnSaveWithoutSerielizer_Click"
Background="#00969D71"
BorderBrush="#FF82FF79"
Foreground="#FFE2AEC5"
/>
<Button
Content="Read
XML without serializer"
x:Name="btnReadWithoutSerielizer"
Click="btnReadWithoutSerielizer_Click"
Foreground="#FFE55292"
BorderBrush="#FFD3EBD6"
/>
</StackPanel>
</Grid>
</phone:PhoneApplicationPage>
Step
7: In this step we will write the Complete code for MainPage.xaml.cs which
is given below:
Code
using System;
using
System.Collections.Generic;
using
System.Linq;
using System.Net;
using
System.Windows;
using
System.Windows.Controls;
using
System.Windows.Documents;
using
System.Windows.Input;
using
System.Windows.Media;
using
System.Windows.Media.Animation;
using
System.Windows.Shapes;
using
Microsoft.Phone.Controls;
using System.Xml;
using
System.IO.IsolatedStorage;
using
System.Xml.Serialization;
using System.IO;
namespace
WP7Sample
{
public partial
class MainPage
: PhoneApplicationPage
{
// Constructor
public MainPage()
{
InitializeComponent();
textBox1.Text = "";
textBox2.Text = "";
textBox3.Text = "";
}
public
class Person
{
string f_name;
string l_name;
int age;
public
string F_Name
{
get {
return f_name; }
set { f_name =
value; }
}
public
string L_Name
{
get {
return l_name; }
set { l_name =
value; }
}
public int
Age
{
get {
return age; }
set { age =
value; }
}
}
private
void btnSave_Click(object sender,
RoutedEventArgs e)
{
// Write to the Isolated Storage
XmlWriterSettings
x_W_Settings = new
XmlWriterSettings();
x_W_Settings.Indent = true;
using (IsolatedStorageFile
ISF = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream
stream = ISF.OpenFile("P.xml",
FileMode.Create))
{
XmlSerializer
serializer = new XmlSerializer(typeof(List<Person>));
using (XmlWriter
xmlWriter = XmlWriter.Create(stream,
x_W_Settings))
{
serializer.Serialize(xmlWriter,
GeneratePersonData());
MessageBox.Show("Data Save!!!!");
}
}
}
}
private
List<Person>
GeneratePersonData()
{
List<Person>
l1 = new List<Person>();
Person p =
new Person();
p.F_Name = textBox1.Text;
p.L_Name = textBox2.Text;
p.Age = Convert.ToInt32(textBox3.Text);
l1.Add(p);
return l1;
}
private
void btnRead_Click(object sender,
RoutedEventArgs e)
{
try
{
using (IsolatedStorageFile
ISF = IsolatedStorageFile.GetUserStoreForApplication())
{
using(IsolatedStorageFileStream
str = ISF.OpenFile("P.xml",
FileMode.Open))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Person>));
List<Person>
l1 = (List<Person>)serializer.Deserialize(str);
this.listBox.ItemsSource
= l1;
}
}
}
catch
{
//add some code here
}
}
private void
btnSaveWithoutSerielizer_Click(object sender,
RoutedEventArgs e)
{
using (IsolatedStorageFile
ISF = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream
isoStream = new
IsolatedStorageFileStream("a.xml",
FileMode.Create, ISF))
{
XmlWriterSettings
settings = new
XmlWriterSettings();
settings.Indent = true;
using (XmlWriter
writer = XmlWriter.Create(isoStream,
settings))
{
writer.WriteStartElement("p",
"person", "urn:person");
writer.WriteStartElement("F_Name",
"");
writer.WriteString(textBox1.Text);
writer.WriteEndElement();
writer.WriteStartElement("L_Name",
"");
writer.WriteString(textBox2.Text);
writer.WriteEndElement();
writer.WriteStartElement("Age",
"");
writer.WriteString(textBox3.Text);
writer.WriteEndElement();
// Ends the document
writer.WriteEndDocument();
// Write the XML to the file.
writer.Flush();
}
}
}
}
private void
btnReadWithoutSerielizer_Click(object sender,
RoutedEventArgs e)
{
try
{
using (IsolatedStorageFile
ISF = IsolatedStorageFile.GetUserStoreForApplication())
{
IsolatedStorageFileStream
Str = ISF.OpenFile("a.xml",
FileMode.Open);
using (StreamReader
reader = new
StreamReader(Str))
{
this.tbx.Text = reader.ReadToEnd();
}
}
}
catch
{ }
}
}
}
Step
8: In this step we will see the design of the MainPage.xaml page.
Step
9: Now we have to run the Windows Phone application and the output is given
below:
Output1
In is the
Default Output whenever we run the application.
Output2
In this output
we will enter the value in the textbox and click to save then it will display as
the figure given below.
Output3
In this Output
we will read the data from isolated storage
Output4
In this Output
we will see that the data is retrieved to the form of XML file as given below.