2011-10-24 214 views
0

我有一個XML數據,在這種情況下,圖像存儲在互聯網..我想讀取Windows手機中的XML並將其保存到內存..我該怎麼辦那?任何教程?閱讀Xml文件並將內容保存到內存中WP7

+0

你在哪裏讀/定義從得到的文件?你想在哪裏保存它?內部存儲器? –

+0

我想從服務器讀取文件,我想保存在內部存儲器或存儲卡.. – jpmd

回答

3

允許將您的任務分爲兩個部分

1.下載XML文件包含圖像路徑

2.讀取XML文件和圖像控件綁定到動態路徑

讓第一種情況收益:

1.下載包含圖像路徑的XML文件

這裏路徑 = HTTP:// server_adrs/XML_FILE

iso_path =隔離儲存其中u要保存XML文件中的路徑。

public void GetXMLFile(string path) 
    { 
     WebClient wcXML = new WebClient(); 
     wcXML.OpenReadAsync(new Uri(path)); 
     wcXML.OpenReadCompleted += new OpenReadCompletedEventHandler(wc); 

    } 

    void wc(object sender, OpenReadCompletedEventArgs e) 
    { 
     var isolatedfile = IsolatedStorageFile.GetUserStoreForApplication(); 
     using (IsolatedStorageFileStream stream = new IsolatedStorageFileStream(iso_path, System.IO.FileMode.Create, isolatedfile)) 
     { 
      byte[] buffer = new byte[e.Result.Length]; 
      while (e.Result.Read(buffer, 0, buffer.Length) > 0) 
      { 
       stream.Write(buffer, 0, buffer.Length); 
      } 
      stream.Flush(); 
      System.Threading.Thread.Sleep(0); 
     }    
    } 

2.讀取XML文件,並結合圖像控制到我有其示出了圖像的列表中的動態路徑

這裏,所以我將一個函數將圖像綁定到這個列表作爲以下。

public IList<Dictionary> GetListPerCategory_Icon(string category, string xmlFileName) 
    { 
     using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      if (storage.FileExists(xmlFileName)) 
      { 
       using (Stream stream = storage.OpenFile(xmlFileName, FileMode.Open, FileAccess.Read)) 
       { 
        try 
        { 
         loadedData = XDocument.Load(stream); 
         var data = from query in loadedData.Descendants("category") 
            where query.Element("name").Value == category 
            select new Glossy_Test.Dictionary 
            { 
             Image=GetImage((string)query.Element("iconpress")),//This is a function which will return Bitmap image 

            }; 
         categoryList = data.ToList(); 
        } 

        catch (Exception ex) 
        { 
         MessageBox.Show(ex.Message.ToString(), (((PhoneApplicationFrame)Application.Current.RootVisual).Content).ToString(), MessageBoxButton.OK); 
         return categoryList = null; 
        } 
       } 
      } 
     } 

     return categoryList; 
    } 

,並在這裏對上述功能

 public BitmapImage GetImage(string imagePath) 
    { 
     var image = new BitmapImage(); 
     imagePath = "/Glossy" + imagePath; 
     using (var storage = IsolatedStorageFile.GetUserStoreForApplication()) 
     { 
      if (storage.FileExists(imagePath)) 
      { 
       using (Stream stream = storage.OpenFile(imagePath, FileMode.Open, FileAccess.Read)) 
       {      
        image.SetSource(stream);       

       } 
      } 
     } 
     return image; 
    } 
0

您可以使用WebClient從服務器中提取xml,然後將其作爲XDocument保存在您的回調中。

相關問題