Silverlight 使用IsolatedStorage新建XML文件,并且用LINQ查询XML

代码

Code highlighting produced by Actipro CodeHighlighter (freeware)http://www.CodeHighlighter.com/-->using System;
using System.Linq;
using System.Windows.Shapes;
using System.Collections.Generic;
using System.Collections.ObjectModel;
using System.IO.IsolatedStorage;
using System.IO;
using System.Xml.Linq;
using System.Xml;
namespace ServiceFacade
{

    public class FResourceCategoryCode
    {
       readonly string strFileName = "ResourceCategoryCode.xml";
        List<FResourceCategoryCodeModel> lfrccs = new List<FResourceCategoryCodeModel>();
/// <summary>
/// 生成XML缓存文件
/// </summary>
public void CreateFile(List<FResourceCategoryCodeModel> lfrccm)
{
try
{
using (IsolatedStorageFile isoStore =
IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream isoStream =
new IsolatedStorageFileStream(strFileName,
FileMode.Create, isoStore))
{
// 根据每个用户存储一个信息
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
// 创建一个XmlWriter.
using (XmlWriter writer = XmlWriter.Create(isoStream, settings))
{
//设置XML的根
writer.WriteStartElement("ResourceCategorys");
foreach (var v in lfrccm)
{
//设置每个元素的根
writer.WriteStartElement("ResourceCategory");

//以下为设置每个元素及值
writer.WriteStartElement("cncCategroyStandard");
writer.WriteString(v.CncCategroyStandard);
writer.WriteEndElement();

writer.WriteStartElement("cnvcCategoryCode");
writer.WriteString(v.CnvcCategoryCode);
writer.WriteEndElement();

writer.WriteStartElement("cnvcCategoryName");
writer.WriteString(v.CnvcCategoryName);
writer.WriteEndElement();

writer.WriteStartElement("cniLevel");
writer.WriteString(Convert.ToString(v.CniLevel));
writer.WriteEndElement();

writer.WriteStartElement("cnvcParentCode");
writer.WriteString(v.CnvcParentCode);
writer.WriteEndElement();

writer.WriteStartElement("cniOrderID");
writer.WriteString(Convert.ToString(v.CniOrderID));
writer.WriteEndElement();

//XML结束标记
writer.WriteEndElement();
}
//XML根结束标记
writer.WriteEndElement();
writer.Flush();
}
}
}
}
catch
{
;
}
}

/// <summary>
        /// 读取缓存文件
        /// </summary>
        private void ReadXml()
        {
            using (IsolatedStorageFile store =
                     IsolatedStorageFile.GetUserStoreForApplication())
            {
                //读取文件并把文件转化为StreamReader
                StreamReader reader = new StreamReader(store.OpenFile(strFileName,
                   FileMode.Open, FileAccess.Read));
                //把字符串转化为XML
                XDocument xmlStory = XDocument.Parse(reader.ReadToEnd());
                //利用LINQ TO XML转化为集合
               var varDetails = from details in xmlStory.Descendants("ResourceCategory")  //只取得节点为ResourceCategory的信息
                                 select new FResourceCategoryCodeModel
                                 {
                                     CncCategroyStandard = (string)details.Element("cncCategroyStandard"),
                                     CnvcCategoryCode = (string)details.Element("cnvcCategoryCode"),
                                     CnvcCategoryName = (string)details.Element("cnvcCategoryName"),
                                     CniLevel = (int)details.Element("cniLevel"),
                                     CniOrderID = (int)details.Element("cniOrderID"),
                                     CnvcParentCode = (string)details.Element("cnvcParentCode")
                                 };
                lfrccs = varDetails.ToList<FResourceCategoryCodeModel>();
                store.Dispose();
            }
        }

/// <summary>
        /// 实体类
        /// </summary>
  public class FResourceCategoryCodeModel
    {
        private int _cniCategroyID;
        /// <summary>
        /// 流水号
        /// </summary>
        public int CniCategroyID
        {
            get { return _cniCategroyID; }
            set { _cniCategroyID = value; }
        }
        private string _cncCategroyStandard;
        /// <summary>
        /// 标准分类编码
        /// </summary>
        public string CncCategroyStandard
        {
            get { return _cncCategroyStandard; }
            set { _cncCategroyStandard = value; }
        }
        private string _cnvcCategoryCode;
        /// <summary>
        /// 资源分类编码
        /// </summary>
        public string CnvcCategoryCode
        {
            get { return _cnvcCategoryCode; }
            set { _cnvcCategoryCode = value; }
        }
        private string _cnvcCategoryName;
        /// <summary>
        /// 资源分类名称
        /// </summary>
        public string CnvcCategoryName
        {
            get { return _cnvcCategoryName; }
            set { _cnvcCategoryName = value; }
        }
        private int _cniLevel;
        /// <summary>
        /// 资源分类层级
        /// </summary>
        public int CniLevel
        {
            get { return _cniLevel; }
            set { _cniLevel = value; }
        }
        private string _cnvcParentCode;
        /// <summary>
        /// 资源分类父级代码
        /// </summary>
        public string CnvcParentCode
        {
            get { return _cnvcParentCode; }
            set { _cnvcParentCode = value; }
        }
        private int _cniOrderID;
        /// <summary>
        /// 排序ID
        /// </summary>
        public int CniOrderID
        {
            get { return _cniOrderID; }
            set { _cniOrderID = value; }
        }
        private string _cnvcRemark;
        /// <summary>
        /// 说明文字
        /// </summary>
        public string CnvcRemark
        {
            get { return _cnvcRemark; }
            set { _cnvcRemark = value; }
        }
}
}
}

然后通过调用方法CreateFile和ReadXml就可以实现了,文件存放的地址是SL的独立空间,在XP系统下的存放地址为C:\Documents and Settings\用户名\Local Settings\Application Data\Microsoft\Silverlight目录下,可以找到很多缓存文件

文章转自:http://www.cnblogs.com/888h/archive/2010/10/20/1856407.html

posted @ 2014-07-29 17:11  银河系上的地球  阅读(212)  评论(0编辑  收藏  举报