2011-10-24 14 views
0

私はxmlのデータを持っています。この場合はインターネットに保存されているイメージです.iはWindowsの電話でxmlを読み込み、メモリに保存したいと思います。それ?チュートリアルは?Xmlファイルを読み込んでメモリに保存するWP7

+0

?どこに保存しますか?内部メモリ? –

+0

私はサーバーからファイルを読んで、私は内部メモリまたはメモリカードに保存したいと思います.. – jpmd

答えて

3

でき、そのダイナミックパスには2つの部分

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として保存することができます。

関連する問題