2011-08-07 83 views
1

我試圖解析XML文件,使我得到的所有的從<pid>標記,用「B」開始記錄如圖所示,當輸出一個記錄:foreach語句只解析XML文件

enter image description here

鏈接到xml文件是:

http://www.bbc.co.uk/radio1/programmes/schedules/england.xml

而且我到目前爲止的代碼是:

<?php 

$xml = simplexml_load_file('http://www.bbc.co.uk/radio1/programmes/schedules/england.xml'); 
foreach($xml->day>broadcasts->broadcast as $pid){ 
echo $pid->programme->pid; 
} 
?> 

據我所知,這foreach statement應該回顯所有的pid記錄,它只做第一個。

關於我的代碼出錯的任何想法,以及如何讓它輸出所有的代碼?

+0

您的意思是'$ XML-> day-> broadcasts-> broadcast'? –

回答

2

由於programme節點是單個broadcast節點的多個子節點,因此您的環路需要更深入一級。因此,您需要遍歷所有programme節點中的每個節點broadcast呼應了他們pid

foreach($xml->day>broadcasts->broadcast as $broadcast){ 

    // Loop over all <programme> contained in each <broadcast> 
    foreach ($broadcast->programme as $prog) { 
    echo $prog->pid; 
    } 
} 
1

你迭代整個XML結構,其中只包含一個「天」的節點。

你應該定位你的 「光標」 先上要迭代的元素的父:

<?php 

$xml = simplexml_load_file('http://www.bbc.co.uk/radio1/programmes/schedules/england.xml'); 
$broadcasts = $xml->day->broadcasts; 
foreach($broadcasts->broadcast as $bc) { 
    echo $bc->programme->pid; 
} 
+0

謝謝,我的錯誤。我編輯了我的帖子,雖然原則保持不變 –