在一个WP7的项目中,需要读取一个配置文件,这个配置文件无需改动,直接读取就可以。可以用以下的方式来实现读取:
在项目中添加Levels.xml文件,格式如下:

<?xml version="1.0" encoding="utf-8"?> <Levels> <Level> <LevelID>48</LevelID> <LevelName>走投无路(注:此布局无解)</LevelName> <Content>2,0,0,4,1,0,2,3,0,2,0,2,2,1,2,1,2,2,2,3,2,1,2,3,1,0,4,1,3,4</Content> <rcnt>0</rcnt> <MinSteps>0</MinSteps> <UserID>1</UserID> <UserName>admin</UserName> <Difficulty>7</Difficulty> </Level> <Level> <LevelID>252</LevelID> <LevelName>7系列:七步成诗</LevelName> <Content>2,0,0,2,1,0,2,3,0,2,0,2,2,1,2,4,2,2,1,0,4,1,1,4,1,2,4,1,3,4</Content> <rcnt>255</rcnt> <MinSteps>7</MinSteps> <UserID>765</UserID> <UserName>艾恩</UserName> <Difficulty>0</Difficulty> </Level> </Levels>

BuildAction设置为Content,然后在代码中读取: XDocument xdoc = XDocument.Load("AllLevels.xml"); listLevels = new List<Level>(); foreach (XElement element in xdoc.Element("Levels").Descendants("Level")) { Level level = new Level(); level.LevelID = int.Parse(element.Element("LevelID").Value); level.Content = element.Element("Content").Value; level.Difficulty = int.Parse(element.Element("Difficulty").Value); //level.Difficulty = 0; level.LevelName = element.Element("LevelName").Value; level.MinSteps = int.Parse(element.Element("MinSteps").Value); level.rcnt = int.Parse(element.Element("rcnt").Value); level.UserID = int.Parse(element.Element("UserID").Value); level.UserName = element.Element("UserName").Value; listLevels.Add(level); }

这样生成xap后,用winrar解压缩就可以看到这个Levels.xml文件,有时候这样不太安全,可以将其编译到dll中。将BuildAction设置成Resource就可以将文件编译到dll里了,初学WP7的话很容易遇到图片无法显示的问题,就是因为图片一般要设置成Content,而不是Resource。

设置成Resource以后就不能直接这样了

XDocument.Load("AllLevels.xml");

可以写完整的Uri路径,或者读取Stream,用以下的方法:(这两种都可以)

//设置成Resource属性时 用Load方法读取Stream //Stream stream = App.GetResourceStream(new Uri("HRD;component/AllLevels.xml", UriKind.Relative)).Stream; //XDocument xdoc = XDocument.Load(stream); //设置成Resource属性时 用Load方法读取uri Uri uri = new Uri("/HRD;component/AllLevels.xml", UriKind.Relative); XDocument xdoc = XDocument.Load(uri.ToString());

这样编译出来的xap中就看不到这个xml文件了,已经被编译到dll里了。

除了用XElement element in xdoc.Element("Levels").Descendants("Level")这样的读取方式外,还可以直接用xml序列化的方式:比如:
//另一种读取方法 //Uri uri = new Uri("MyResource/MyPeople.xml", UriKind.Relative); //StreamResourceInfo sri = Application.GetResourceStream(uri); //if (sri != null) //{ // XmlSerializer serializer = new XmlSerializer(typeof(List<Person>)); // List<Person> data = (List<Person>)serializer.Deserialize(sri.Stream); // this.listBox.ItemsSource = data; //}

参考以下文章:
http://blog.csdn.net/lee353086/article/details/6674095
http://www.silverlightchina.net/html/zhuantixilie/winphone7/2010/1207/3966.html?1292140571
http://www.cnblogs.com/tianyutingxy/archive/2011/02/27/1966267.html

转载于:https://www.cnblogs.com/yanxiaodi/archive/2011/12/05/2296455.html

在wp7中读取XML的配置文件,Content与Resource的区别相关推荐

  1. java property xml,Java开发中读取XML与properties配置文件的方法

    相关阅读: 1. XML文件: 什么是XML?XML一般是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 2.XML文件的优点: 1)XML文档内容和结构完 ...

  2. SQL Server中读取XML文件的简单做法

    SQL Server 2000使得以XML导出数据变得更加简单,但在SQL Server 2000中导入XML数据并对其进行处理则有些麻烦.本文介绍在SQL Server中读取XML文件的简单做法. ...

  3. matlab分析xml文件_如何在Java中读取XML文件(DOM分析器)

    matlab分析xml文件 Today we will learn how to read the XML file in Java. We will also learn how to parse ...

  4. C#中读取XML文件方法

    C#中读取XML文件方法 XML 简介 格式 c#读取XML文件方法 使用XmlDocument 操作 注意 解决方法: 使用XmlTextReader/XmlTextWriter 操作 使用Linq ...

  5. java xml 读取库_Java开发中读取XML与properties配置文件的方法

    相关阅读: 1. XML文件: 什么是XML?XML一般是指可扩展标记语言,标准通用标记语言的子集,是一种用于标记电子文件使其具有结构性的标记语言. 2.XML文件的优点: 1)XML文档内容和结构完 ...

  6. c#读取xml文件配置文件Winform及WebForm-Demo具体解释

    我这里用Winform和WebForm两种为例说明怎样操作xml文档来作为配置文件进行读取操作. 1.新建一个类,命名为"SystemConfig.cs".代码例如以下: < ...

  7. java读取xml路径问题_java 中读取xml 和绝对路径

    一.得到绝对路径 本人用到的不多,就列举常用的. 以上2种可读取固定配置文件可用得到绝对路径 1.System.getProperty("user.dir"); 这个东西局限性十分 ...

  8. c#读取xml文件配置文件Winform及WebForm-Demo详解

    我这里用Winform和WebForm两种为例说明如何操作xml文档来作为配置文件进行读取操作. 1.新建一个类,命名为"SystemConfig.cs",代码如下: <sp ...

  9. 在kotlin companion object中读取spring boot配置文件,静态类使用@Value注解配置

    在kotlin companion object中读取配置文件 静态类使用@Value注解配置 class Config {@Value("\${name}")fun setNam ...

最新文章

  1. converter 迁移xen server 上的虚拟机 到 wmware esxi
  2. golang 获取昨天日期
  3. O2O产品经理,请多关注屏幕之外
  4. 大批量执行webservice出现“无法连接远程服务器”解决方案
  5. python语言基础项目报告书_25个Python学习项目,值得推荐
  6. Ubuntu 18.04换国内源
  7. 冬季防御抗疫情宣传插画素材,时刻提醒大家注意
  8. 忆芯科技发布新一代国产主控芯片STAR1000P!4月完成量产版本
  9. 工商银行计算机网银不能连接u盾,工商银行网银U盾无法识别怎么办
  10. Python 日历模块 calendar
  11. MM 固定汇率的使用在MIRO的问题
  12. MySQL 5.6.21下载安装之安装篇(二)
  13. 南卡耳机好还是万魔好?国产半入耳蓝牙耳机对比
  14. iphone为什么不能连接到服务器未响应,苹果手机(iPhone)连接电脑没反应?(这样就可以解决!)...
  15. 【k8s】docker网络模式(必知)
  16. ubuntu 13.10 无法连接wifi问题歪解
  17. 微信小程序java服务_微信小程序访问webService(Java)
  18. gcc官网以及各个版本下载地址
  19. 8.0强行转换后变成了7_爱剪辑:如何把竖屏视频变成横屏
  20. android 模拟器虚拟CPU的修改

热门文章

  1. 林锐 高质量c语言编程下载,新年献礼:Go语言深度入门手册
  2. Java集合 Collection
  3. java视频压缩 lz4_一种视频序列帧的压缩方法、解压方法及装置与流程
  4. 中蜂几月份自然分蜂_蜜蜂什么时候自然分蜂?
  5. mysql hbase 同步_HBase 简介和使用 Sqoop 同步 Mysql 数据到 HBase
  6. 修复计算机的英语,Windows Repair最新版
  7. linux安装服务程序,将 Go 程序安装成系统服务
  8. 让8只数码管从左往右显示1、2、3、4、、、8
  9. Java System类详解
  10. python的pygame库使用方法_[宜配屋]听图阁