Подскажите почему скрипт не проходит по всем тэгам "length" в xml файле... Он выводит только первый и ошибку. XML-файл: Код (Text): <?xml version="1.0" encoding="UTF-8" ?> <root> <catalogue> <FILM_1_NAME> <name>FILM_NAME</name> <packages> <_pack1>shared <includes> <cd>_cd_name_<length>60.0</length></cd> <cd>_cd_name_<length>80.0</length></cd> <book>_book_name_<length>0.0</length></book> </includes> </_pack1> <_pack2>shared <includes> <misc>_misc_name_<length>5.0</length></misc> <book>_book_name_<length>0.0</length></book> </includes> </_pack2> <_pack3>shared </_pack3> </packages> </FILM_1_NAME> <FILM_2_NAME> <name>FILM_NAME</name> <packages> <_pack1>shared </_pack1> <_pack2>shared <cd>_cd_name_<length>30.0</length></cd> </_pack2> </packages> </FILM_2_NAME> </catalogue> </root> Скрипт обработки: Код (Text): <?php $xml=simplexml_load_file("cat.xml"); $cat_array=array(); for($y=0,$i=0;$y<($xml->catalogue->children()[0]->packages->children()[$y]->includes->cd->count()),$i<($xml->catalogue->children()[0]->packages->children()->count());$y++,$i++) { if(!empty($xml->catalogue->children()[0]->packages->children()[$i]->includes->cd[$y])) { $cat_array[$y]=$xml->catalogue->children()[0]->packages->children()[$i]->includes->cd[$y]->length; } echo $cat_array[$y]."<br />"."y: ".$y."<br />"." x: ".$i; } ?> Результат: 60.0 y: 0 x: 0 Notice: Undefined offset: 1 in C:\localweb\index.php on line 15 y: 1 x: 1 Fatal error: Call to a member function count() on a non-object in C:\localweb\index.php on line 7
Вывести содержимое всех тегов length можно так: Код (PHP): $xml=simplexml_load_file("cat.xml"); function recurse_run($parent){ foreach($parent->children() as $el){ if($el->getName() == 'length'){ echo $el, '<br/>'; } recurse_run($el); } } recurse_run($xml->catalogue);
Все работает пока известна структура xml файла. А как можно изменить написанное вами, чтобы обрабатывался такой файл: Код (Text): <root> <item1>value1</item1> <item2>value2</item2> <item3>value3 <item4>value4</item4></item3> <item5>value5 <item6>value6 <item7>value7</item7></item6></item5> </root> Причем, неизвестно какое кол-во, какое название и какая вложенность у тэгов item... Весь вечер бьюсь ерунда выходит
Нужно было вывести все теги <length> Не верю. Код (PHP): <?php $xml=simplexml_load_file('cat2.xml'); function recurse_run($parent){ foreach($parent->children() as $el){ echo $el, '<br/>'; recurse_run($el); } } recurse_run($xml);