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