我有一個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