Milagro
Новичок
Не могу рекурсивно обойти XML-дерево
function hasAttribute($divnode, $count){
foreach ($divnode->child_nodes() as $chnode){
if($chnode->has_attributes())
return hasAttribute($chnode, $count+1);
else
return hasAttribute($chnode, $count);
}
return $count;
}
$xmldom = domxml_open_mem("<?xml version=\"1.0\" encoding=\"utf-8\"?><div attr=\"true\"><div attr=\"true\"></div><div><div attr=\"true\"></div></div></div>");
$divarray = $xmldom->get_elements_by_tagname("div");
$divnode = $divarray[0];
echo hasAttribute($divnode, 0);
По идее код должен подсчитать количество узлов (div-ов) у которых есть параметр. Как ни пытался, выводит все время меньше. С виду все тривиально, но есть проблема в рекурсивной функции - часть узлов теряется, не понимаю почему.
Дерево в моем примере такое:
<div attr="true">
<div attr="true"></div>
<div>
<div attr="true"></div>
</div>
</div>
Помогите, уже сломал голову!
function hasAttribute($divnode, $count){
foreach ($divnode->child_nodes() as $chnode){
if($chnode->has_attributes())
return hasAttribute($chnode, $count+1);
else
return hasAttribute($chnode, $count);
}
return $count;
}
$xmldom = domxml_open_mem("<?xml version=\"1.0\" encoding=\"utf-8\"?><div attr=\"true\"><div attr=\"true\"></div><div><div attr=\"true\"></div></div></div>");
$divarray = $xmldom->get_elements_by_tagname("div");
$divnode = $divarray[0];
echo hasAttribute($divnode, 0);
По идее код должен подсчитать количество узлов (div-ов) у которых есть параметр. Как ни пытался, выводит все время меньше. С виду все тривиально, но есть проблема в рекурсивной функции - часть узлов теряется, не понимаю почему.
Дерево в моем примере такое:
<div attr="true">
<div attr="true"></div>
<div>
<div attr="true"></div>
</div>
</div>
Помогите, уже сломал голову!