Windows Phone Isolated Storage 系列 - 使用XmlSerializer读取和存储XML文件

这是第五篇关于系列短文章“WP7 Isolated Storage系列”,专注于真实实用,并且有源代码的例子,而不是存粹理论。接下来我将要讨论关于如何从Isolated Storage中读取数据和保存数据到Isolated Storage。

· WP7 Isolated Storage 系列 - 1.Isolated Storage 简介

· WP7 Isolated Storage 系列 - 2.创建文件夹和文件

· WP7 Isolated Storage 系列 - 3.使用IsolatedStorageSettings存储数据

· WP7 Isolated Storage 系列 - 4.读取和存储文本文件

· WP7 Isolated Storage 系列 - 5.使用XmlSerializer读取和存储XML文件

· WP7 Isolated Storage 系列 - 6.使用XmlWriter读取和存储XML文件

· WP7 Isolated Storage 系列 - 7.读取和存储图像

· WP7 Isolated Storage 系列 - 8.读取和存储拍摄的图像

· WP7 Isolated Storage 系列 - 9.读取和存储二进制文件

· WP7 Isolated Storage 系列 - 10.文件操作

· WP7 Isolated Storage 系列 - 11.建议和最佳实践

· WP7 Isolated Storage 系列 - 12.开源数据库和帮助库文件

让我们从创建一个简单的Windows Phone 7工程开始。下一步需要添加下面的namespaces到MainPage.xaml.cs中去(或者你可以在另一个页面中使用这个代码):

  1. using System.Xml;
  2. using System.Xml.Serialization;
  3. using System.IO.IsolatedStorage;
  4. using System.IO;

注意:你将要添加一个引用到System.Xml.Serialization

读取和保存XML文件到Isolated StorageWP7程序中是一个非常普通的任务。

基本上我们使用IsolatedStorageFileStream类在Isolated Storage中来读取,写入和创建文件。当谈到XML文件的主要区别是使用XmlWriter。我们可以使用XmlSerializer序列化对象到XML文档和从XML文档反序列化对象。

注意:当对文件进行操作时总是使用using声明,因为它提供了一个方便的语法来确保正确的使用IDisposable对象。

在这篇文章里我们将使用下面的业务类来生成我们的XML文件结构:

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; }   
    }   
 
}   

下面就是如何序列化数据到XML中去

private List GeneratePersonData()   
{   
    List data = new List();   
    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;   
}   

使用XmlSerializer保存新的XML文件到Isolated Storage中

在这个例子里我们将创建一个名为People.xml的XML文件到Isolated Storage中去,然后写入数据。

// 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));   
        using (XmlWriter xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))   
        {   
            serializer.Serialize(xmlWriter, GeneratePersonData());   
        }   
    }   
 
}   

注意:这是最好的途径操作XML和Isolated Storage。

注意:当创建新文件时我们使用FileMode.Create,当我们想要写入文件时使用FileAccess.Write!你可以在这里找到关于FileAccess的信息。

使用XmlSerializer从Isolated Storage中读取XML文件

在这个例子中首先从Isolated Storage打开存在的名为People.xml的XML文件然后读取它的内容。之后内容将被显示到一个ListBox中去。

try   
{   
    using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())   
    {   
        using(IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("People.xml", FileMode.Open))   
        {   
            XmlSerializer serializer = new XmlSerializer(typeof(List));   
            List data = (List)serializer.Deserialize(stream);   
            this.listBox.ItemsSource = data;   
        }   
    }   
}   
catch    
{   
    //add some code here   
 
}   

注意:这是最好的途径操作XML和Isolated Storage。

注意:当从Isolated Storage中打开存在的文件时使用FileMode.Open,当我们想要读取文件时使用FileAccess.Read!你可以在这里找到关于FileAccess的信息。

<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声明,因为它提供了一个方便的语法来确保正确的使用IDisposable对象。

在这篇文章里我谈到了关于如何使用XmlSerializer读取和保存XML文件到Isolated Storage中去。这里是所有的源码(包括下一篇文的所有的XmlSerializer和XmlWriter的例子):

原文链接:http://www.windowsphonegeek.com/tips/All-about-WP7-Isolated-Storage---Read-and-Save-XML-files

转载于:https://www.cnblogs.com/lihaibo-Leao/archive/2013/06/04/3117508.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值