自作ソフトの開発日記

自分用に作ったソフトの配布や、作成時に知ったことのメモを残していきます

[C#]Yahoo!天気RSSから天気を取得する(1)[メモ]

apiを勉強するために、まずは簡単そうなRSSXML)の取得を勉強しています。


正直プログラミングなんてマトモに勉強したことがない身としては、
調べてみる→理解できず諦める→再チャレンジしてみる→やはり理解できず
の繰り返しでした。

これまでは単純なコードだけでも組めるものしか作ってきませんでしたが・・・やっぱりもっと大きな物を作りたいじゃないですか!



という訳で、ちょっぴり理解できたので、それをメモとして残しておきます。

 今回はYahoo!天気・災害のRSSから指定地域の天気を取得し、フォームアプリ上に表示したいと思います。

提供RSS - Yahoo!天気・災害


書いたコードはこちら。
(button1、label1、label2、label3、をForm1に配置しています)
以下は「button1_Click」の部分に書いています。

XmlDocument XD = new XmlDocument();
XD.Load("https://rss-weather.yahoo.co.jp/rss/days/13.xml"); // 東京都
    
XmlNode Xroot = XD.DocumentElement;
    label1.Text = Convert.ToString(Xroot.Name);
XmlNode A = Xroot.SelectSingleNode("channel/title");
    label2.Text = Convert.ToString(A.InnerText);
XmlNode B = Xroot.SelectSingleNode("channel/item[2]/title");
    label3.Text = Convert.ToString(B.InnerText);

出力結果は

rss
Yahoo!天気・災害 - 東京都の天気
【 25日(火) 伊豆諸島北部(大島) 】 曇時々晴 - 29℃/26℃ - Yahoo!天気・災害

でした。

結果を見ると、rootは「rss」であることが分かります。
そこからRSSの中身と照らし合わせて、取得したい箇所を指定して取得していきます。

label2は<channel>の<title>を取得しています。XPathとかいうのは「"channel/title"」。
正確には、「rss」の中の「channel」の中の「title」ですね。

label3は<item>の<title>を取得しているのですが、<item>は複数あるのが悩ましいです。
行き着いた答えが、n番目の<item>を指定する方法。
単純に「item[1]」や「item[2]」と指定するだけでした。分かってしまえば簡単ですね。


 

と、今回はこれだけのことを学びました。
次はこれらを利用して、簡易な天気ソフトでも作ってみようと思います。