首先创建一个Windows Phone 7项目,然后在MainPage.xaml.cs(或其他页面文件)中引入命名空间:
1
2
3
4
|
using
System.Xml;
using
System.Xml.Serialization;
using
System.IO.IsolatedStorage;
using
System.IO;
|
提示:你需要在项目中添加System.Xml.Serialization引用。
对于很多应用,向隔离存储空间读写XML文件是很常见的任务。
一般情况下我们使用类IsolatedStorageFileStream进行读、写、创建文件等操作。与使用XmlWriter不同的是,XmlSerializer使我们更方便的在Object和XML文档之间进行序列化与反序列化转换。
本篇中我们将使用如下的Person类来生成XML文件结构:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
|
public
class
Person
{
string
firstname;
string
lastname;
int
age;
public
string
FirstName
{
get
{
return
firstname; }
set
{ firstname = value; }
}
public
string
LastName
{
get
{
return
lastname; }
set
{ lastname = value; }
}
public
int
Age
{
get
{
return
age; }
set
{ age = value; }
}
}
|
将要被序列化的数据对象:
1
2
3
4
5
6
7
8
|
private
List<Person> GeneratePersonData()
{
List<Person> data =
new
List<Person>();
data.Add(
new
Person() { FirstName =
"Kate"
, LastName =
"Brown"
, Age = 25 });
data.Add(
new
Person() { FirstName =
"Tom"
, LastName =
"Stone"
, Age = 63 });
data.Add(
new
Person() { FirstName =
"Michael"
, LastName =
"Liberty"
, Age = 37 });
return
data;
}
|
示例中创建了一个名为People.xml的XML文件并写入数据。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
|
// Write to the Isolated Storage
XmlWriterSettings xmlWriterSettings =
new
XmlWriterSettings();
xmlWriterSettings.Indent =
true
;
using
(IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using
(IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile(
"People.xml"
, FileMode.Create))
{
XmlSerializer serializer =
new
XmlSerializer(
typeof
(List<Person>));
using
(XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
{
serializer.Serialize(xmlWriter, GeneratePersonData());
}
}
}
|
提示:创建文件使用FileMode.Create,写入内容使用FileAccess.Write。FileAccess的成员共有Read、Write、ReadWrite三种。
示例中打开了一个已存在的文件People.xml并读取它的内容。然后把数据显示在一个ListBox上。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
|
try
{
using
(IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using
(IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile(
"People.xml"
, FileMode.Open))
{
XmlSerializer serializer =
new
XmlSerializer(
typeof
(List<Person>));
List<Person> data = (List<Person>)serializer.Deserialize(stream);
this
.listBox.ItemsSource = data;
}
}
}
catch
{
//add some code here
}
|
提示:打开已存在文件使用FileMode.Open,读取内容使用FileAccess.Read。
1
2
3
4
5
6
7
8
9
10
11
|
<
ListBox
x:Name
=
"listBox"
>
<
ListBox.ItemTemplate
>
<
DataTemplate
>
<
StackPanel
Margin
=
"10"
>
<
TextBlock
Text
=
"{Binding FirstName}"
/>
<
TextBlock
Text
=
"{Binding LastName}"
/>
<
TextBlock
Text
=
"{Binding Age}"
/>
</
StackPanel
>
</
DataTemplate
>
</
ListBox.ItemTemplate
>
</
ListBox
>
|
提示:当进行文件操作的时候始终使用using关键字,using结束后会隐式调用Disposable方法,清理非托管资源。