Windows Phone讀取XML的配置文件
在一個WP7的項目中,需要讀取一個配置文件,這個配置文件無需改動,直接讀取就可以??梢杂靡韵碌姆绞絹韺崿F讀?。?/p>
在項目中添加AllLevels.xml文件,格式如下:
BuildAction設置為Content,然后在代碼中讀?。?/p>
- XDocument xdoc = XDocument.Load("AllLevels.xml");
- listLevels = new List();
- 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);
- evel.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解壓縮就可以看到這個AllLevels.xml文件,有時候這樣不太安全,可以將其編譯到dll中。將 BuildAction設置成Resource就可以將文件編譯到dll里了,初學WP7的話很容易遇到圖片無法顯示的問題,就是因為圖片一般要設置成 Content,而不是Resource。
設置成Resource以后就不能直接這樣了
1. 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里了。
除了用 1. 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));
- List data = (List)serializer.Deserialize(sri.Stream);
- this.listBox.ItemsSource = data;
- }
參考以下文章:
http://bbs.wpdever.com/thread-3161-1-1.html