【问题标题】:Read XML file in Windows Phone 8.1 Background task在 Windows Phone 8.1 后台任务中读取 XML 文件
【发布时间】:2014-08-13 06:06:53
【问题描述】:

我正在构建一个 Windows Phone 8.1 RT 应用程序,它在 后台任务 中运行 MP3 文件。

我按照此处显示的示例代码中的步骤操作:http://code.msdn.microsoft.com/windowsapps/BackgroundAudio-63bbc319

在 MyPlaylistManager 项目中,我想从 XML 文件构建自己的播放列表。

当我尝试访问这个 XML 文件时,我遇到了一个异常。

SYSTEM.XML.NI.DLL 中出现“System.Xml.XmlException”类型的异常,但未在用户代码中处理

附加信息:发生内部错误。

我已将 XML 文件添加到项目并设置

构建操作:内容

复制到输出目录:如果较新则复制

要访问我厌倦了以下选项的文件:

  XDocument xdoc = XDocument.Load("ms-appx:///XYZ.xml");

  XDocument xdoc = XDocument.Load("XYZ.xml");

根据文档,Windows Phone 8.1 支持 XDocument.Load: http://msdn.microsoft.com/en-us/library/bb343181(v=vs.110).aspx

关于我做错了什么的任何指示。 谢谢。

【问题讨论】:

  • 请记住,我正在尝试在后台任务中执行此操作
  • 在前台进程中反序列化它是否有效?您是否还可以检查文件是否存在以及它的内容 - StorageFile file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync("XYZ.xml");
  • 我尝试了您的代码,但要检查文件是否存在:mscorlib.ni.dll 中发生了“System.IO.FileNotFoundException”类型的异常,但未在用户代码中处理。你是对的,它无法找到该文件。
  • @Romasz 当我尝试 GetFileAsync("ms-appx:///XYZ.xml");我在 mscorlib.ni.dll 中出现“System.ArgumentException”类型的异常,但未在用户代码中处理其他信息:值不在预期范围内。

标签: c# winrt-xaml windows-phone-8.1


【解决方案1】:

我认为问题在于,因为您没有提供正确的路径。您的文件在项目 MyPlaylistManager 中。尝试使用:

XDocument xdoc = XDocument.Load("ms-appx:///MyPlaylistManager/Quran.xml");
// or like this:
StorageFile file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"MyPlaylistManager\Quran.xml");

也不要忘记在引用中包含 MyPlaylistManager。或许this answer 也会有所帮助。

EDIT - 你也可以尝试使用 XDocument.Load(Stream) - 然后在你的 BackgroundTask 首先获取 StorageFile 然后加载 XDocument 使用 Stream 从文件中获取。

【讨论】:

  • 现在当我使用 StorageFile file = await Windows.ApplicationModel.Package.Current.InstalledLocation.GetFileAsync(@"SampleBackgroundAudio.MyPlaylistManager\Quran.xml");还必须给命名空间。
  • @SaqibVaid 现在,一旦你得到文件,你应该能够处理它。当然也有可能存在其他问题。
  • 但是当我尝试 XDocument xdoc = XDocument.Load("ms-appx:///SampleBackgroundAudio.MyPlaylistManager/Quran.xml");它抛出一个错误“发生内部错误。”
  • 这是因为XML文件已损坏还是我使用ms-appx时必须以某种方式指定文件路径...
  • @SaqibVaid 首先在前台进程中执行所有操作,然后在工作时将其移至后台任务。我不确定可能是什么问题。您可以尝试获取 storagefile,然后 XDocument.Load(fileStream) - 看看是否可行。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-10-15
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多