1

XMLファイルからopenweathermapデータを読み込んでみます

XML コード:

<weatherdata>
<location>
<name>Tokyo</name>
<type/>
<country>JP</country>
<timezone/>
<location altitude="0" latitude="35.689499" longitude="139.691711" geobase="geonames" geobaseid="0"/>
</location>
<credit/>
<meta>
<lastupdate>2013-08-19T19:30:49</lastupdate>
<calctime>0.0119</calctime>
<nextupdate>2013-08-19T22:30:49</nextupdate>
</meta>
<sun rise="2013-08-18T20:03:32" set="2013-08-19T09:26:02"/>
<forecast>
<time day="2013-08-19">
<symbol number="800" name="sky is clear" var="01n"/>
<precipitation/>
<windDirection deg="197" code="SSW" name="South-southwest"/>
<windSpeed mps="3.25" name="Light breeze"/>
<temperature day="27.43" min="27.43" max="27.43" night="27.43" eve="27.43" morn="27.43"/>
<pressure unit="hPa" value="1012.64"/>
<humidity value="82" unit="%"/>
<clouds value="sky is clear" all="0" unit="%"/>
</time>
</forecast>
</weatherdata>

そして、私はこれを読むためにこのコードを使用します

doc = Nokogiri::XML(open("http://api.openweathermap.org/data/2.5/forecast/daily?q=tokyo&mode=xml&units=metric&cnt=1"))
        doc.remove_namespaces!


        @city = doc.xpath('//name').inner_text
        @country = doc.xpath('//country').inner_text
        @lastupdate = doc.xpath('//lastupdate').inner_text
        @symbolvar = doc.xpath('//symbol/@var').inner_text

        @temperature = doc.xpath('//temperature/@day').inner_text
        @temperaturemin = doc.xpath('//temperature/@min').inner_text
        @temperaturemax = doc.xpath('//temperature/@max').inner_text

        @symbol = doc.xpath('//symbol/@name').inner_text
        @windname = doc.xpath('//windSpeed/@name').inner_text 
        @mps = doc.xpath('//windSpeed/@mps').inner_text 
        @winddirection = doc.xpath('//windDirection/@name').inner_text 
        @winddirectiondeg = doc.xpath('//windDirection/@deg').inner_text 

        @clouds = doc.xpath('//clouds/@value').inner_text 

        @pressure = doc.xpath('//pressure/@value').inner_text

1日のデータを読み取ると機能しますが、これを読み取ろうとすると

<weatherdata>
<location>
<name>Tokyo</name>
<type/>
<country>JP</country>
<timezone/>
<location altitude="0" latitude="35.689499" longitude="139.691711" geobase="geonames" geobaseid="0"/>
</location>
<credit/>
<meta>
<lastupdate>2013-08-19T19:36:46</lastupdate>
<calctime>0.0241</calctime>
<nextupdate>2013-08-19T22:36:46</nextupdate>
</meta>
<sun rise="2013-08-18T20:03:32" set="2013-08-19T09:26:02"/>
<forecast>
<time day="2013-08-19">
<symbol number="800" name="sky is clear" var="01n"/>
<precipitation/>
<windDirection deg="197" code="SSW" name="South-southwest"/>
<windSpeed mps="3.25" name="Light breeze"/>
<temperature day="27.43" min="27.43" max="27.43" night="27.43" eve="27.43" morn="27.43"/>
<pressure unit="hPa" value="1012.64"/>
<humidity value="82" unit="%"/>
<clouds value="sky is clear" all="0" unit="%"/>
</time>
<time day="2013-08-20">
<symbol number="800" name="sky is clear" var="01d"/>
<precipitation/>
<windDirection deg="191" code="S" name="South"/>
<windSpeed mps="4.31" name="Gentle Breeze"/>
<temperature day="35.02" min="27.36" max="35.62" night="28.63" eve="33.04" morn="27.36"/>
<pressure unit="hPa" value="1012.26"/>
<humidity value="58" unit="%"/>
<clouds value="sky is clear" all="0" unit="%"/>
</time>
<time day="2013-08-21">
<symbol number="501" name="moderate rain" var="10d"/>
<precipitation value="11" type="rain"/>
<windDirection deg="87" code="E" name="East"/>
<windSpeed mps="1.51" name=""/>
<temperature day="33.7" min="25.37" max="33.7" night="25.37" eve="27.07" morn="26.67"/>
<pressure unit="hPa" value="1014.26"/>
<humidity value="64" unit="%"/>
<clouds value="few clouds" all="24" unit="%"/>
</time>
</forecast>
</weatherdata>

データを 3 回読み取ります

nokogiri を使用して、3 つの異なる日から別々のデータを読み取る方法は?

4

2 に答える 2