Foreach语句仅在解析XML文件时输出一条记录

时间:2011-08-07 18:43:18

标签: php xml foreach simplexml

我正在尝试解析XML文件,以便从<pid>标记中获取以'b'开头的所有记录,如下所示:

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记录,只记录第一个记录。

关于我的代码出错的地方的任何想法,我如何输出所有这些?

2 个答案:

答案 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;
}