wp7加载XML文件,处理加载的xml为pointer为null的报错

转载 2012年03月24日 15:26:11
本文介绍一下如何在Silverlight for Windows Phone中读取XML文件。一.准备XML文件
    首先我们来准备一个待读取的XML文件,可以在Visual Studio中创建也可以添加一个已有的,我选择添加已有项,如下图:
如果要新创建,选择New Item即可。注意:添加XML文件后需要将文件属性中的Build Action改为Resource,如下图:
1.png 
2.png 
下面是XML文件中的内容,很简单:
  1. <?xml version="1.0" encoding="utf-8" ?>
  2. <Carmakers>
  3.   <CarBrand Name="Aston Martin"/>
  4.   <CarBrand Name="Bentley"/>
  5.   <CarBrand Name="Bugatti"/>
  6.   <CarBrand Name="Ferrari"/>
  7.   <CarBrand Name="Jaguar"/>
  8.   <CarBrand Name="Lamborghini"/>
  9.   <CarBrand Name="Maserati"/>
  10.   <CarBrand Name="Maybach"/>
  11.   <CarBrand Name="Porsche"/>
  12.   <CarBrand Name="Rolls-Royce"/>
  13. </Carmakers>
复制代码

二.加载并读取XML文件
上篇文章中我们提到了Application类,下面就要通过这个类中的GetResourceStream方法来将XML文件中的内容加载到一个StreamResourceInfo对象中,代码如下:
  1. public partial class MainPage : PhoneApplicationPage
  2.     {
  3.         XElement carMakers;

  4.         // Constructor
  5.         public MainPage()
  6.         {
  7.             InitializeComponent();

  8.             StreamResourceInfo xml = Application.GetResourceStream(new Uri("/WindowsPhoneLoadingXMLFileDemo;component/Carmakers.xml", System.UriKind.Relative));

  9.             carMakers = XElement.Load(xml.Stream);

  10.             this.ManipulationStarted += new EventHandler<ManipulationStartedEventArgs>(MainPage_ManipulationStarted);
  11.         }

  12.         void MainPage_ManipulationStarted(object sender, ManipulationStartedEventArgs e)
  13.         {
  14.             var carNames = from car
  15.                            in carMakers.Elements("CarBrand")
  16.                            select car.Attribute("Name").Value;
  17.             lbxCarmakers.ItemsSource = carNames;
  18.         }
  19.     }
复制代码

要注意Uri类中的路径”/WindowsPhoneLoadingXMLFileDemo;component/Carmakers.xml “。我使用Linq To XML(需要在项目中添加System.Xml.Linq程序集的引用并在代码中添加using System.Xml.Linq;语句)来读取XML中的节点信息,首先通过XElement.Load方法加载整个流,然后在整个页面的ManipulationStarted事件处理程序中将所有的CarBrand信息读出来,赋给一个Listbox的ItemsSource属性,这样就可以将XML中的数据呈现出来了。
另外,对于XML文件来说,也可以直接通过
XElement.Load("/WindowsPhoneLoadingXMLFileDemo;component/Carmakers.xml");
来获取到一个XElement。下面是程序截图:
3.bmp 

相关文章推荐

内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:wp7加载XML文件,处理加载的xml为pointer为null的报错
举报原因:
原因补充:

(最多只允许输入30个字)