2012-04-22 42 views
0

我真的沒有太多的XML工作,我會感謝一些幫助。使用System.Data.DataSet在.Net中讀取XML/RSS?

我想讀WeatherBug公司

一個RSS feed我發現一些示例代碼在這裏:

http://geekswithblogs.net/thibbard/archive/2006/01/13/65764.aspx

當他們使用System.Data.DataSet中讀取XML飼料。

(他們使用VBasic我使用VC#)

這裏是XML我想讀的一個樣本:

http://api.wxbug.net/getLiveCompactWeatherRSS.aspx?ACode=A5333948364&zipcode=80918&unittype=0&OutputType=1

在代碼示例中,他們得到的風速如下:

_wind = DS.Tables( 「風速」)行(0).Item( 「風speed_Text」)

我怎麼知道指定FO什麼r每個索引值?我想我明白他們是如何確定風速的,但他們是如何確定如何指定wind-speed_Text?

我可以使用看到在我的調試器的值:

m_ds.Tables [ 「風速」]行[0] .ItemArray

我可以看到3個值。 「MPH」,「3」和0.

MPH將是單位。 「3」將是速度。不知道什麼是0。

如何訪問aws的值:WebURL?

而我只看到8張桌子,但還有更多值。通過撥動調試器,我在Weather表中找到了這些URL以及風向和陣風方向的值。

我以爲我把整桌的東西都釘牢了,但似乎沒有韻,也沒有理由。

任何人都可以把我放在正確的道路上?基本上,我只需要知道如何根據我在XML中看到的內容找出在DataTable中找到的東西。

感謝

回答

1

方便快捷:

XDocument doc = XDocument.Load("http://api.wxbug.net/getLiveCompactWeatherRSS.aspx?ACode=A5333948364&zipcode=80918&unittype=0&OutputType=1"); 
      XNamespace ns = "http://www.aws.com/aws"; 
      var webUrl = doc.Element(ns + "weather").Element(ns + "WebURL").Value; 
      var wind = doc.Element(ns + "weather").Element(ns + "wind-speed").Value; 

你也可以使用LINQ:

XDocument doc = XDocument.Load("http://api.wxbug.net/getLiveCompactWeatherRSS.aspx?ACode=A5333948364&zipcode=80918&unittype=0&OutputType=1"); 
      XNamespace ns = "http://www.aws.com/aws"; 
      var v = from d in doc.Elements(ns + "weather") select new { WebUrl = d.Element(ns + "WebURL").Value, WindSpeed = d.Element(ns + "wind-speed").Value}; 
      foreach (var c in v) 
      { 
       Console.WriteLine(c.WebUrl + "--" + c.WindSpeed); 
      } 
+0

這似乎輕鬆了許多。任何想法爲什麼原來的程序員去了System.Data.DataSet? 我注意到在.Net中編碼很多。有一件事我注意到有很多方法可以做同樣的事情。可能太多了。 :)也似乎有很多方法和屬性與一個對象。可能太多了。 :) – 2012-04-22 13:26:26

+0

我理解使用數據集的原因是它可以綁定到一個控件?那麼爲什麼數據不是以某種合理的方式加載的呢?這似乎到處都是。 – 2012-04-22 13:47:11

+0

我可能會使用普通的基於C#的模型而不是DataSet,這樣我甚至可以根據需要添加行爲。 – ninja 2012-04-22 14:10:55