すべて、ゲームをロードする前に、リモート Web サービスから XML データを取得する Windows Phone ゲームに取り組んでいます。これにより、ゲームが使用するデータの一部が随時更新されます。その部分はうまく機能します。Web サービスからデータを取得したら、次を使用します。
void Response_Completed(IAsyncResult result)
{
HttpWebRequest request = (HttpWebRequest)result.AsyncState;
HttpWebResponse response = (HttpWebResponse)request.EndGetResponse(result);
using (StreamReader streamReader = new StreamReader(response.GetResponseStream()))
{
string xml = streamReader.ReadToEnd();
using (XmlReader reader = XmlReader.Create(new StringReader(xml)))
{
reader.MoveToContent();
reader.GetAttribute(0);
reader.MoveToContent();
webMessage = reader.ReadInnerXml();
これで、webMessage 文字列変数に XML の文字列を取得できました。次に、それを IsolatedStorage のファイルに書き込みます。再び素晴らしい作品。私の問題は、データを読みに行くときです:
using (IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication())
{
using (IsolatedStorageFileStream stream = myIsolatedStorage.OpenFile("Test.xml", FileMode.Open))
{
XmlSerializer serializer = new XmlSerializer(typeof(List<Item>));
List<Item> data = (List<Item>)serializer.Deserialize(stream);
foreach (Item item in data)
{
System.Diagnostics.Debug.WriteLine(item.Item);
}
}
}
したがって、問題は、ファイルが分離ストレージに書き込まれるときに、すべての XML マークアップがエスケープされるため、ファイルを読み取るときに、"<" ではなく %lt; を読み取ることです。これにより、デシリアライズが失敗し、無効な文字が報告されます。Web サービスから取得した XML のループを回避しようとしていますが、これは無駄に思えます。自分のサーバーから取得した有効な XML であることはわかっています。Web サービスから取得している XML を取得して、IsolatedStorage のファイルに一度に書き込む方法を知っている人はいますか?
前もって感謝します。