2013-09-30 41 views
2

您好我從來沒有使用過XML,但現在需要,所以我想學得很快,但與我認爲的結構掙扎。這只是爲了在某個網站的頂部顯示天氣。如何使用PHP顯示的SimpleXMLElement

我想用這個XML鏈接ftp://ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml

基本上我想獲得3天墨爾本預測(什麼都只是一些作品)有一個預測週期陣列[0],以顯示墨爾本天氣[6 ]

我用這個的print_r來查看結構:

$url = "linkhere"; 
$xml = simplexml_load_file($url); 
echo "<pre>"; 
print_r($xml); 

,並試圖只是爲了得到一些東西:

$url = "linkhere"; 
$xml = simplexml_load_file($url); 

$data = (string) $xml->forecast->area[52]->description; 
echo $data; 

這給了我什麼(預計「墨爾本」),很明顯,我需要學習,我,但如果有人可以幫助將是巨大的。

+0

您的腳本是否會產生錯誤? echo $ data輸出是什麼? – andrewb

回答

0

因爲description<area>的屬性,你需要使用

$data = (string) $xml->forecast->area[52]['description']; 

我也不會依靠墨爾本是第52區節點(儘管這是真的取決於數據維護人員)。我想它的aac屬性去,因爲這似乎是唯一的,如

$search = $xml->xpath('forecast/area[@aac="VIC_PT042"]'); 
if (count($search)) { 
    $melbourne = $search[0]; 
    echo $melbourne['description']; 
} 
+0

真棒謝謝!已經迴盪整天:) – user2829848

+0

@ user2829848我已經更新了我的答案與一些更多的信息,可能對您有用 – Phil

+0

首先感謝有用的東西,那是一個好主意,我會做 – user2829848

0

這是給你一個工作示例:

<?php 

$forecastdata = simplexml_load_file('ftp://ftp2.bom.gov.au/anon/gen/fwo/IDV10753.xml','SimpleXMLElement',LIBXML_NOCDATA); 

    foreach($forecastdata->forecast->area as $singleregion) { 
    $area = $singleregion['description']; 
    $weather = $singleregion->{'forecast-period'}->text; 
    echo $area.': '.$weather.'<hr />'; 
    } 

?> 

您可以編輯上述的例子中提取標籤和屬性你要。

一定要記住,一個很好的做法,以瞭解您的XML對象的結構使用正在打印的內容,例如,print_r

在你提出的XML的特定情況下,城市是通過屬性指定(說明)。因此,您必須使用['屬性名稱]'(see here for more information)來讀取這些屬性。

還要注意,標籤{'forecast-period'}被包裹在大括號導致它包含一個連字符,否則它不會告發產生錯誤。