我正在使用可自定义的实时图块创建一个应用程序,并且有一些我想要包含在项目中的标记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:///资产...
MS-APPEX:// ...资产
MS-APPX:// ...资产
/资产...
资产...
/瓷砖...
瓷砖...
一切都无济于事。我检查了输出目录,文件确实被复制到位于以下位置的资源目录:\bin\Debug\AppX\
尝试将其作为文件加载也不起作用:
using System.IO;
string xmlContent = File.ReadAllText("");
上面抛出一个错误,指出File未定义。
答案 0 :(得分:3)
首先尝试将路径更改为“ms-appx”而不是“ms-appex”。 如果这不起作用(我希望如此)尝试将Stream获取到资源文件,然后调用 接收Stream的XmlDocument上的Load overloaded方法。
见这里:http://msdn.microsoft.com/en-us/library/windows/apps/hh965322.aspx 在这里:Getting a Stream from a resource file / content
答案 1 :(得分: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
答案 2 :(得分:1)
您是否尝试使用“Assets \ Tiles \ FileName.xml”? 因为有时在Windows上使用'\'而不是'/'会有所帮助。
答案 3 :(得分:-1)
我终于可以使用以下代码完成此任务:
XDocument xDoc = XDocument.Load(@"Assets\Tiles\SM_Date.xml");
XmlDocument wideTileXml = new XmlDocument();
wideTileXml.LoadXml(xDoc.ToString());
对我来说,这似乎是一种解决方法,因为我必须将XML作为纯文本加载,然后从纯文本XML中创建一个XmlDocument ...
有点hackish,但是现在,它做我需要的。感谢所有帮助。