我有一个使用 PHP 的 Simplexml 解析的 XML 文件,但是我在通过节点进行迭代时遇到了问题。
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 结构可能以某种方式无效?