2

我正在创建一个带有可自定义动态磁贴的应用程序,并且有一些我自己的、我想包含在我的项目中的标记的 XML 模板。

XML 文件已放置在Assets/Tiles/FileName.xml.

我正在尝试使用以下代码来加载文档:

XmlDocument tileXml = new XmlDocument();
tileXml.LoadXml("ms-appx:///Assets/Tiles/SM_Date.xml");

文件名与目录中一样存在。运行时,应用程序强制退出,无法找到指定的文件。

这是我在输出中遇到的唯一错误

AppName.exe 中出现“System.Exception”类型的第一次机会异常

在此处输入图像描述

如何从项目资产加载 XML 文件?

我尝试了以下路径

ms-appex:///Assets/Tile/SM_DAte.xml
ms-appx:///Assets...
ms-appex://Assets... ms-appx://
Assets...
/Assets...
资产...
/瓷砖...
瓷砖...

都无济于事。我检查了输出目录,文件确实被复制到位于以下位置的资产目录:\bin\Debug\AppX\

尝试将其作为文件加载也不起作用:

using System.IO;
string xmlContent = File.ReadAllText("");

上面会抛出一个错误,指出该文件未定义。

4

4 回答 4

3

首先尝试将路径更改为“ms-appx”而不是“ms-appex”。如果这不起作用(我希望如此)尝试将 Stream 获取到资源文件,然后在接收 Stream 的 XmlDocument 上调用 Load 重载方法。

请参见此处:http: //msdn.microsoft.com/en-us/library/windows/apps/hh965322.aspx 和此处:从资源文件/内容中获取流

于 2013-11-07T09:47:10.240 回答
2

如果@atomaras 回答没有帮助,请尝试在 XML 文件中设置属性,如下所示:

Build Action : Content
Copy to Output Directory : Copy Always or Copy if newer

刚刚检查过,XmlDocument 似乎没有加载文件的重载 - 它接受 XML 字符串。请尝试LoadFromFileAsync

http://msdn.microsoft.com/en-US/library/windows/apps/br206263

于 2013-11-11T13:19:03.623 回答
1

您是否尝试使用“Assets\Tiles\FileName.xml”?因为有时使用 '\' 而不是 '/' 在 Windows 上会有所帮助。

于 2013-11-13T16:22:28.480 回答
-1

我终于能够通过使用以下代码来实现这一点:

XDocument xDoc = XDocument.Load(@"Assets\Tiles\SM_Date.xml");
XmlDocument wideTileXml = new XmlDocument();
wideTileXml.LoadXml(xDoc.ToString());

对我来说,这似乎是一种解决方法,因为我必须将 XML 作为纯文本加载,然后从纯文本 XML 制作一个 XmlDocument ......

有点骇人听闻,但就目前而言,它可以满足我的需求。感谢所有帮助。

于 2013-11-11T17:42:35.940 回答