2015-10-29 88 views
1

我的XmlReader有問題。 問題是,讀者在閱讀網頁只有2次,但我需要更多一點... 如果我打電話給我的讀者從方法:Android上的XmlReader

public string Meth1() 
    { 
     string tvcal = ""; 
     string url = "http://www.nbrb.by/Services/XmlExRates.aspx?ondate=" + dtp1.ToString("MM/dd/yyyy"); 
     XmlReader reader = XmlReader.Create(url); 
     while (reader.Read()) 
     { 
      if (reader.Name.Equals("Currency")) 
      { 
       reader.MoveToFirstAttribute(); 
       try 
       { 
        if (Int32.Parse(reader.Value) == 145) 
        { 
         reader.ReadToFollowing("CharCode"); 
         currencyUSD = reader.ReadElementContentAsString(); 
         reader.ReadToFollowing("Name"); 
         currencyUSD += " " + reader.ReadElementContentAsString(); 
         reader.ReadToFollowing("Rate"); 
         currencyUSD += " " + reader.ReadElementContentAsString() + " руб.\n"; 

         tvcal += ("На Дату------" + dtp1.ToShortDateString() + "------\n"); 
         tvcal += (currencyUSD); 
        } 
        if (Int32.Parse(reader.Value) == 19) 
        { 
         reader.ReadToFollowing("CharCode"); 
         currencyEUR = reader.ReadElementContentAsString(); 
         reader.ReadToFollowing("Name"); 
         currencyEUR += " " + reader.ReadElementContentAsString(); 
         reader.ReadToFollowing("Rate"); 
         currencyEUR += " " + reader.ReadElementContentAsString() + " руб.\n"; 

         tvcal += (currencyEUR); 
        } 
        if (Int32.Parse(reader.Value) == 190) 
        { 
         reader.ReadToFollowing("CharCode"); 
         currencyRUR = reader.ReadElementContentAsString(); 
         reader.ReadToFollowing("Name"); 
         currencyRUR += " " + reader.ReadElementContentAsString(); 
         reader.ReadToFollowing("Rate"); 
         currencyRUR += " " + reader.ReadElementContentAsString() + " руб.\n"; 

         tvcal += (currencyRUR); 
         break; 
        } 
       } 
       catch { } 
      } 
     } 
     return tvcal; 
    } 

它編譯和一切都很好,那麼如果我叫它再次它仍然工作返回我的結果。 但是,如果我嘗試打電話給它第三次它在這裏沒有錯誤剎車:while (reader.Read()) 該讀者的另一個問題,當我試圖調用enother類在那裏使用讀者。 冷杉我在我的班級調用方法Meth1,它給了我結果,然後我打電話給另一個班,其中包含2個方法,如Meth1,他們做的是工作,但對於靜態日期。而在編譯到while (reader.Read())其他類的第二個方法(XmlReader的第三個對象)的時刻,它將hendle發回到android應用程序,並在幾秒鐘後剎車。

我已經搜索了這樣的問題,但什麼也沒找到。 在Windows上運行的另一個應用程序正在與類似的類和方法正常工作。

回答

1

你確定你正在讀取你的XML響應嗎?

在完成處理後,嘗試將XmlReader reader = XmlReader.Create(url)statemnet包裝到using() - 語句中以進行處置。

using (XmlReader reader = XmlReader.Create(url)) { 
    ... 
} 
+1

謝謝,這確實有幫助!) 這樣一個簡單的方法來解決這個問題!) –