2013-02-14 82 views
0

我怎樣才能轉化成http://www.floatrates.com/daily/USD.xml列表在C#轉換XML數據到一個列表

到目前爲止,我有:

protected void btnUpdate_Click (object sender, EventArgs e) { 

    XmlDocument xmlDoc = new XmlDocument (); 
    xmlDoc.Load ("http://www.floatrates.com/daily/USD.xml"); 
    XmlNodeList itemNodes = xmlDoc.SelectNodes ("//channel/title/link/description/language/pubDate/lastBuildDate/item"); 
    foreach (XmlNode itemNode in itemNodes) { 

     XmlNode currencyNode = itemNode.SelectSingleNode ("targetCurrency"); 
     XmlNode rateNode = itemNode.SelectSingleNode ("exchangeRate"); 




     GridView2.DataSource = lstdata; 
     GridView2.DataBind (); 
    } 
+2

那麼,你有沒有考慮創建自己的類,每個元素的實例? (如果可以,我強烈建議使用LINQ to XML。) – 2013-02-14 08:41:27

回答

1

我會創建一個對象來保存這些值並使用Linq2XML來查詢xml文檔。

protected void btnUpdate_Click (object sender, EventArgs e) 
    { 
     GridView2.DataSource = GetFloatRates(); 
     GridView2.DataBind (); 
    } 

    private List<FloatRateItem> GetFloatRates() 
    { 
     XDocument xmlDoc = XDocument.Load("http://www.floatrates.com/daily/USD.xml"); 
     var floatRates = xmlDoc.Descendants("channel"); 

     var items = from i in floatRates.Elements("item") 
        select new FloatRateItem 
        { 
         Title = i.Element("title").Value, 
         Link = i.Element("link").Value, 
         Description = i.Element("description").Value, 
         PubDate = i.Element("pubDate").Value, 
         BaseCurrency = i.Element("baseCurrency").Value, 
         TargetCurrency = i.Element("targetCurrency").Value, 
         ExchangeRate = i.Element("exchangeRate").Value 
        }; 

     return items.ToList(); 
    } 

    class FloatRateItem 
    { 
     public string Title { get; set; } 
     public string Link { get; set; } 
     public string Description { get; set; } 
     public string PubDate { get; set; } 
     public string BaseCurrency { get; set; } 
     public string TargetCurrency { get; set; } 
     public string ExchangeRate { get; set; } 

     public override string ToString() 
     { 
      return string.Format(@"<item> 
<title>{0}</title> 
<link>{1}</link> 
<description>{2}</description> 
<pubDate>{3}</pubDate> 
<baseCurrency>{4}</baseCurrency> 
<targetCurrency>{5}</targetCurrency> 
<exchangeRate>{6}</exchangeRate> 
</item>", Title, Link, Description, PubDate, BaseCurrency, TargetCurrency, ExchangeRate); 
     } 
    } 
+0

完美謝謝你 – Leventis1984 2013-02-14 09:03:34

1

這將做你想做的。修改ds.Tables[0].Rows行以從XML獲取所需的數據。

public static List<string> ProcessXMLDoc() 
{ 
     XmlDocument xDoc = new XmlDocument(); 
     xDoc.Load("http://www.floatrates.com/daily/USD.xml"); 
     List<string> xmlList = new List<string>(); 
     StringReader sr = new StringReader(xDoc.OuterXml); 

     DataSet ds = new DataSet(); 
     ds.ReadXml(sr); 

     foreach (DataRow row in ds.Tables[0].Rows) 
     { 
      if (!string.IsNullOrWhiteSpace(row[0].ToString())) 
      { 
       xmlList.Add(row[0].ToString()); 
      } 
     } 

     return xmlList; 
    } 
+0

感謝您的快速回答。首先我想檢索只有 按下按鈕到我的gridview – Leventis1984 2013-02-14 08:56:47