我有一个XML文件,我用PHP的Simplexml解析,但我有一个问题,通过节点迭代。Simplexml对象节点迭代
的XML:
<channel>
<item>
<title>Title1</title>
<category>Cat1</category>
</item>
<item>
<title>Title2</title>
<category>Cat1</category>
</item>
<item>
<title>Title3</title>
<category>Cat2</category>
</item>
</channel>
我计数功能:
public function cat_count($cat) {
$count = 0;
$items = $this->xml->channel->item;
$size = count($items);
for ($i=0; $i<$size; $i++) {
if ($items[$i]->category == $cat) {
$count++;
}
}
return $count;
}
我俯瞰在我的代码中的错误,或者是有通过节点迭代另一种优选的方法是什么?我也使用了foreach和while语句,但没有运气,所以我不知所措。有什么建议么?
编辑:在使用下面的XPath的方法,我注意到,使用
foreach ($this->xml->channel->item as $item) {
echo $item->category;
}
将打印所有的类别名称,但是,使用
foreach ($this->xml->channel->item as $item) {
if ($item->category == $cat) {
echo $item->category;
}
}
将只打印了一倍类的一个实例。即使我复制并粘贴了线条,也只有一个显示。这是否意味着XML结构可能无效?
对不起,可怕的格式。我的手机在编辑器上播放不好。请相应编辑。 – MorbidWrath
项目重复多次,所以应该迭代或引用为$ this-> xml-> channel-> item [0],$ this-> xml-> channel-> item [1]等 –
这就是实际上,我在做。只是输错了它。我更新了代码。 – MorbidWrath