2011-12-12 50 views
0

嘗試從雅虎XML文檔中的[yweather:astronomy]的日出元素中提取值。沿着線 試過各種組合:試圖從雅虎天氣XML中提取元素

echo $yweather->astronomy == 'sunrise'; 

是拉動從日出元件右側術語的值?在網絡上使用這個術語努力尋找幫助的方式。

的代碼的其餘部分被用作祝

雅虎XML文檔 - 片斷

<rss xmlns:yweather="http://xml.weather.yahoo.com/ns/rss/1.0" 
xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" version="2.0"> 
    <channel> 
    <title>Yahoo! Weather - New York, NY</title> 
    <link> 
     http://us.rd.yahoo.com/dailynews/rss/weather/New_York__NY/*http://weather.yahoo.com/forecast/USNY0996_f.html 
    </link> 
    <description>Yahoo! Weather for New York, NY</description> 
    <language>en-us</language> 
    <lastBuildDate>Mon, 12 Dec 2011 1:50 pm EST</lastBuildDate> 
    <ttl>60</ttl> 
    <yweather:location city="New York" region="NY" country="US"/> 
    <yweather:units temperature="F" distance="mi" pressure="in" speed="mph"/> 
    <yweather:wind chill="40" direction="0" speed="5"/> 
    <yweather:atmosphere humidity="37" visibility="10" pressure="30.54" rising="2"/> 
    <yweather:astronomy sunrise="7:09 am" sunset="4:26 pm"/> 

rssweather.php

<?php 

// Get XML data from source 
$feed = file_get_contents("http://weather.yahooapis.com/forecastrss?p=USNY0996&u=f"); 

// Check to ensure the feed exists 
if(!$feed){ 
die('Weather not found! Check feed URL'); 
} 

$xml = new SimpleXmlElement($feed); 

foreach ($xml->channel as $entry){ 
    echo "<strong>Description</strong> "; 
    echo $entry->description; 
    echo "<br /><strong>Collected on</strong> "; 
    echo $entry->lastBuildDate; 

    //Use that namespace 
    $yweather = $entry->children("http://xml.weather.yahoo.com/ns/rss/1.0"); 
    echo "<br /><strong>Sunrise</strong> "; 
    echo $yweather->astronomy == 'sunrise'; 

} 
>? 

回答

2

我的最終解決方案

// Get and return sunrise time 
function get_sunrise_time(SimpleXMLElement $xml) { 
    $weather['sunrise'] = $xml->channel->children('yweather', TRUE)->astronomy[1]->attributes()->sunrise; 

    return $weather; 
}