我正在尝试解析XML文件,以便从<pid>
标记中获取以'b'开头的所有记录,如下所示:
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 :(得分: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 :(得分:1)
你正在迭代整个xml结构,它只包含一个“day”节点。
您应该首先将“光标”放在要迭代的元素的父元素上:
<?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;
}