2012-05-03 52 views
0

全部, 我正在研究一個windows手機遊戲,該遊戲在遊戲加載之前從遠程Web服務獲取一些XML數據。這更新了遊戲不時使用的一些數據。這部分工作得很好。一旦抓住從Web服務中的數據,我使用:Windows Phone xna遊戲,如何保存從Web服務檢索到的XML

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中的文件的方法嗎?

在此先感謝。

+0

如果你使用'XmlSerializer'既'序列化();'和'反序列化();'你應該就好了。當你的代碼站立時,你不會發布你將它保存到IsolatedStorage的部分。 – Nate

回答

0

我最終通過遍歷Web服務返回的XML元素來填充自定義的可序列化的自定義對象。這是沒有太多的代碼在所有:

 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(); 
       while (reader.Read()) 
       { 

        if (reader.NodeType == XmlNodeType.Element) 
        { 
         string objectItem = reader.ReadElementContentAsString(); 
         webData.Add(new CustomObject() { Item = objectItem }); 

        } 
       } 
     } 
相關問題