2012-04-22 11 views
0

私は本当にXMLで多くのことをしていないし、助けていただければ幸いです。 System.Data.DataSetを使用して.NETでXML/RSSを読み込む

は、私はここにいくつかのサンプルコードを見つけWeatherBugの

からRSSフィードを読み込むしようとしています:彼らはでSystem.Data.DataSetを使用している

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

は、XMLフィードを読むために。

(彼らは私がVC#を使用していますVBasicを使用している)

ここでは、私が読んしようとしているXMLのサンプルです:コード例で

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

彼らは風速を取得します。次のように:

_wind = DS.Tables( "風速")を行(0).Item( "風speed_Text")

どのように私はfoを指定するために何を知っています各インデックス値は、私は彼らが風速を指定する方法を理解していると思いますが、どのようにwind-speed_Textを指定するのかを決定しましたか?

私は、デバッガ内の値使用して見ることができます:。

m_ds.Tables [ "風速" を]行[0] .ItemArray

私は3つの値を見ることができます。 "MPH"、 "3"および0。

MPHが単位になります。 「3」がスピードになります。 0が何であるかわからない

そして、私はaws:WebURLの値にどのようにアクセスしますか?

私は8台のテーブルしか見ません。しかし、それ以上の価値があります。デバッガを使いこなすことで、天気表の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でコードが記述されています。私はそれに気づいたことの一つに、同じことをする方法がたくさんある。たぶんあまりにも多く。 :)また、オブジェクトを持つメソッドとプロパティのトンがあるようです。たぶんあまりにも多く。 :) –

+0

データセットを使用する理由は、コントロールにバインドできるということを理解していますか?では、なぜデータが論理的に読み込まれないのですか?それはどこにでもあるようだ。 –

+0

DataSetsではなくプレーンなC#ベースのモデルを使用して、必要に応じてビヘイビアを追加することもできます。 – ninja

関連する問題