2013-06-29 35 views
0

我有一個PHP錯誤上:的getElementsByTagName()非對象

Fatal error: Call to a member function getElementsByTagName() on a non-object in /weather /classes/BxWeatherModule.php on line 37

下面的代碼:

function serviceWeatherIndexPage() { 
    include("geoipcity.inc"); 
    include("geoipregionvars.php"); 
    $ip = $_SERVER['REMOTE_ADDR']; 
    $weather_feed = ""; 
    $pathr= BX_DOL_URL_ROOT; 
    $gi = geoip_open("../GeoLiteCity.dat",GEOIP_STANDARD); 
    $record = geoip_record_by_addr($gi,$ip); 
    geoip_close($gi); 
    $city = $record->city; 
    if ($city == "") 
     $city = "Sydney"; 
    $url_post = "http://where.yahooapis.com/v1/places.q('".urlencode($city)."')?appid=foOF4CzV34EFIIW4gz1lx0Ze1em._w1An3QyivRalpXCK9sIXT5de810JWold3ApkdMdCrc-"; 
    $weather_feed = file_get_contents($url_post); 
    $objDOM = new DOMDocument(); 
    $objDOM->loadXML($weather_feed); 
    $woeid = $objDOM->getElementsByTagName("place")->item(0)->getElementsByTagName("woeid")->item(0)->nodeValue; 
} 

回答

-1

這對我的作品,試試這個:

<?php 

    $sUrl = "http://where.yahooapis.com/v1/places.q('paris')?appid=foOF4CzV34EFIIW4gz1lx0Ze1em._w1An3QyivRalpXCK9sIXT5de810JWold3ApkdMdCrc-"; 
    $sXml = file_get_contents($sUrl); 

    $oXml = new DOMDocument(); 
    $oXml->loadXML($sXml); 

    try { 
     $sWoeid = $oXml 
      ->getElementsByTagName('place')->item(0) 
      ->getElementsByTagName('woeid')->item(0) 
      ->nodeValue; 

    } catch (Exception $oException) { 
     print 'Malformed XML'; 
    } 

    print "WOEID is $sWoeid"; 

?>

0

是的,但我想要一個與此代碼的應用程序:

$url_post = "http://where.yahooapis.com/v1/places.q(".var_dump(urlencode($city)).")?appid=foOF4CzV34EFIIW4gz1lx0Ze1em._w1An3QyivRalpXCK9sIXT5de810JWold3ApkdMdCrc-"; 
$weather_feed = file_get_contents($url_post); 
$objDOM = new DOMDocument(); 
$objDOM->loadXML($weather_feed); 
$woeid = $objDOM->getElementsByTagName("place")->item(0)->getElementsByTagName("woeid")->item(0)->nodeValue; 

我有一個其他錯誤: 管柱(20​​) 「Garges-1%E8s-戈內斯」 警告:的file_get_contents(http://where.yahooapis.com/v1/places.q()?appid=foOF4CzV34EFIIW4gz1lx0Ze1em._w1An3QyivRalpXCK9sIXT5de810JWold3ApkdMdCrc-)function.file-GET-內容]:未能打開流:HTTP請求失敗! HTTP/1.0 400 Bad Request in /homez.627/dolphint/www/Dolphin-Boonex-Templates/modules/doldesign/newsinfos/weather/index.php on line 19

Warning:DOMDocument :: loadXML()[domdocument .loadxml]:在第21行提供的作爲/homez.627/dolphint/www/Dolphin-Boonex-Templates/modules/doldesign/newsinfos/weather/index.php輸入的空字符串

致命錯誤:致電成員函數getElementsByTagName()在第22行的/homez.627/dolphint/www/Dolphin-Boonex-Templates/modules/doldesign/newsinfos/weather/index.php中的非對象上

0

因爲未能加載數據與file_get_contents() t他DOM結構有沒有因此錯誤。要解決它,你需要檢查ELEMENT 是否是物體,然後再請求其屬性等。

$url_post = "http://where.yahooapis.com/v1/places.q(".var_dump(urlencode($city)).")?appid=foOF4CzV34EFIIW4gz1lx0Ze1em._w1An3QyivRalpXCK9sIXT5de810JWold3ApkdMdCrc-"; 
$weather_feed = file_get_contents($url_post); 
$objDOM = new DOMDocument(); 
$objDOM->loadXML($weather_feed); 
if (is_object($objDOM->getElementsByTagName("place")->item(0))){ 
    $woeid = $objDOM->getElementsByTagName("place")->item(0)->getElementsByTagName("woeid")->item(0)->nodeValue; 
}