在Windows Phone 7(WP7)中加载本地xml文件

时间:2010-12-10 02:06:10

标签: xml windows-phone-7 load local-files

我正在尝试加载一个存在于Windows Phone 7解决方案中的XML文件。我想知道将文件包含在项目中的正确方法,然后用代码引用它。我当前的代码给了我一个错误

NotSupportedException异常 “WebClient请求期间发生异常。”

这是我的WebClient代码的存根

WebClient workbenchAdConfigRequest = new WebClient();
workbenchAdConfigRequest.OpenReadCompleted += new OpenReadCompletedEventHandler(workbenchAdConfigRequest_OpenReadCompleted);
workbenchAdConfigRequest.OpenReadAsync(new Uri("/SampleData/SampleData.xml", UriKind.Relative));

并且事件处理程序是

private void workbenchAdConfigRequest_OpenReadCompleted(object sender, OpenReadCompletedEventArgs e)
    {
        try
        {
            XElement xml = XElement.Load(e.Result);         
        }
        catch
        {
            //return
        }
    }

在文件/SampleData/SampleData.xml上我已将属性设置为

构建操作:嵌入式参考 复制到输出目录:不复制 自定义工具:MSBuild:编译

您可以从应用程序的“文件路径”加载本地文件吗?

3 个答案:

答案 0 :(得分:3)

您还可以在XML文件的属性中将“Build Action”设置为“Content”,然后在后面的代码中设置:

using System.Xml.Linq;

...

XElement appDataXml;

StreamResourceInfo xml = Application.GetResourceStream(new Uri("yourxmlfilename.xml", UriKind.Relative)); 
appDataXml = XElement.Load(xml.Stream);

答案 1 :(得分:2)

以下是加载XML文件的方法:

在XML文件的属性中将“Build action”设置为“Resource”,然后在代码中设置:

using System.Xml.Linq;

...

XElement appDataXml;

StreamResourceInfo xml = Application.GetResourceStream(new Uri("/yourprojectname;component/yourxmlfilename.xml", UriKind.Relative)); 
appDataXml = XElement.Load(xml.Stream);

答案 2 :(得分:0)

这是我在MSDN上发布的一个工作项目,只是在XAP中存储XML并使用XDocument / LINQ加载它,将结果绑定到ListBox。

binding a Linq datasource to a listbox