0

MSDN などの記事「ファイル リソースを読み込む方法」では、アプリケーション パッケージ内のコンテンツをアドレス指定するための ms-appx および ms-appdata URI スキームについて説明しています。

http://msdn.microsoft.com/en-us/library/windows/apps/hh781229.aspx

問題は、画像ファイル以外のものをロードする方法が見当たらないことです。たとえば、XmlReader はこれらの URI スキームをサポートしておらず、すべての Windows.Storage.PathIO 静的読み取りメソッドがスローします。

COMException: 「COM コンポーネントの呼び出しからエラー HRESULT E_FAIL が返されました。」

不適切な URI/使用法エラーが原因で例外が発生している可能性があります。Silverlight がさまざまな理由でこのメッセージをスローしていたことは知っています。

パッケージから画像以外のデータを読み取ることができた人はいますか?

ルーク

4

2 に答える 2

0

私は今、自分の質問に答えることができます。

var f = Windows.ApplicationModel.Package.Current.InstalledLocation.GetFolderAsync("Data").AsTask().Result;
var i = f.GetFileAsync("Sample Data.xml").AsTask().Result;
var s = Windows.Storage.FileIO.ReadTextAsync(i).AsTask().Result;

var r = System.Xml.XmlReader.Create(new StringReader(s));
r.MoveToContent();

var x = r.ReadInnerXml();

awaits がないことをお許しください。実験的なコードです。

パッケージ URI を受け入れない XmlReader.Create メソッドの接続バグを提出しました。これはそれほど難しいことではありません。また、パッケージ URI が使用されていない場合、パッケージ URI のポイントは何でしょうか。

于 2013-05-08T16:25:47.747 に答える
0

ms-appxURI を受け入れるすべての WinRT API でスキームを使用できます。次のようにコードを書き直すことができます (完全なファイルの内容を最初Streamにロードする代わりに、から直接読み取ることもできます)。string

var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///Data/Sample Data.xml"));
var stream = await file.OpenStreamForReadAsync();
var reader = XmlReader.Create(stream);
reader.MoveToContent();
var result = reader.ReadInnerXml();

PathIOメソッドも正常に動作するはずです。私はちょうどこれを試しました:

var xml = await PathIO.ReadTextAsync("ms-appx:///Assets/Sample Data.xml");
于 2013-05-09T04:50:31.133 に答える