Доброго времени. Есть XML. Подскажите как правильнее распарсить, потом нужно будет передавать в Smarty, но не суть. Получил архив, но даже перебрать его толком не могу. Вот XML и полученный архив: Код (Text): <?xml version="1.0"?> <mtechno> <routes> <route routeCode="00035" routeName="Діма Т4"> <Days> <Day dayOfWeeks="Понедельник" hours="09:40; 18:00"/> <Day dayOfWeeks="Вторник" hours="18:00"/> <Day dayOfWeeks="Среда" hours="18:00"/> <Day dayOfWeeks="Четверг" hours="18:00"/> <Day dayOfWeeks="Пятница" hours="18:00"/> </Days> </route> <route routeCode="00018" routeName="Хуст - Іршава"> <Days> <Day dayOfWeeks="Понедельник" hours="12:50"/> <Day dayOfWeeks="Вторник" hours="12:50"/> <Day dayOfWeeks="Среда" hours="12:50"/> <Day dayOfWeeks="Четверг" hours="12:50"/> <Day dayOfWeeks="Пятница" hours="12:50"/> <Day dayOfWeeks="Суббота" hours="12:50"/> </Days> </route> </routes> </mtechno> PHP: array(1) { ["mobtech"]=> array(1) { ["routes"]=> array(1) { ["route"]=> array(2) { [0]=> array(2) { ["attr"]=> array(2) { ["routeCode"]=> string(5) "00035" ["routeName"]=> string(12) "Діма Т4" } ["Days"]=> array(1) { ["Day"]=> array(5) { [0]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(22) "Понедельник" ["hours"]=> string(12) "09:40; 18:00" } } [1]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(14) "Вторник" ["hours"]=> string(5) "18:00" } } [2]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(10) "Среда" ["hours"]=> string(5) "18:00" } } [3]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(14) "Четверг" ["hours"]=> string(5) "18:00" } } [4]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(14) "Пятница" ["hours"]=> string(5) "18:00" } } } } } [1]=> array(2) { ["attr"]=> array(2) { ["routeCode"]=> string(5) "00018" ["routeName"]=> string(23) "Хуст - Іршава" } ["Days"]=> array(1) { ["Day"]=> array(6) { [0]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(22) "Понедельник" ["hours"]=> string(5) "12:50" } } [1]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(14) "Вторник" ["hours"]=> string(5) "12:50" } } [2]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(10) "Среда" ["hours"]=> string(5) "12:50" } } [3]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(14) "Четверг" ["hours"]=> string(5) "12:50" } } [4]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(14) "Пятница" ["hours"]=> string(5) "12:50" } } [5]=> array(1) { ["attr"]=> array(2) { ["dayOfWeeks"]=> string(14) "Суббота" ["hours"]=> string(5) "12:50" } } } } } } } } } не могу получить routeName в цикле. Замучался.
Код (Text): <?php $s = <<<XML <?xml version="1.0"?> <mtechno> <routes> <route routeCode="00035" routeName="Діма Т4"> <Days> <Day dayOfWeeks="Понедельник" hours="09:40; 18:00"/> <Day dayOfWeeks="Вторник" hours="18:00"/> <Day dayOfWeeks="Среда" hours="18:00"/> <Day dayOfWeeks="Четверг" hours="18:00"/> <Day dayOfWeeks="Пятница" hours="18:00"/> </Days> </route> <route routeCode="00018" routeName="Хуст - Іршава"> <Days> <Day dayOfWeeks="Понедельник" hours="12:50"/> <Day dayOfWeeks="Вторник" hours="12:50"/> <Day dayOfWeeks="Среда" hours="12:50"/> <Day dayOfWeeks="Четверг" hours="12:50"/> <Day dayOfWeeks="Пятница" hours="12:50"/> <Day dayOfWeeks="Суббота" hours="12:50"/> </Days> </route> </routes> </mtechno> XML; $obj_xml = new SimpleXMLElement($s); foreach ($obj_xml->routes->route as $route ) { print_r($route["routeName"]); } ?>
Подскажите пожалуйста не могу разобраться, как получить значение dayOfWeeks маршрута "Діма Т4", как обрабатывать этот объект, получить значение "Діма Т4" "Понедельник", спасибо.
Код (Text): $obj_xml = new SimpleXMLElement($s); foreach ($obj_xml->routes->route as $route ) { print_r($route["routeName"]); foreach ($route->Days->Day as $day ) { print_r($day["dayOfWeeks"]); } } // Отдельно print_r($obj_xml->routes->route[0]->Days->Day[0]["dayOfWeeks"]);
Крайний вопрос, может дойдет: вывести все "часы" по "понедельнику" route=0. Саму строчку цикла, если можно.
Код (Text): $obj_xml = new SimpleXMLElement($s); foreach ($obj_xml->routes->route as $route ) { print_r($route["routeName"]); foreach ($route->Days->Day as $day ) { if ($day["dayOfWeeks"]=="Понедельник") print_r($day["hours"]); } }
Так спасибо огромное, потихоньку разобрался. А вот такая идея: есть 5 табов (сегодня, завтра, послезавтра и соотвествено пятница, суббота) Надо вывести в табы соответствующее время, причем сдвигать их в зависимости от дня недели (сегодня - вторник, завтра - среда и т.д. воскресенье не используется. Как бы их циклом (табы) выводить?
Слишком много букв Задачу не совсем понял. Вывести время в таб, который совпадает по дню недели с уже имеющимся?
Спасибо за отклик, справился. Нет есть табы с днями недели, причем первый по порядку, соответствуют текущему дню, задача была заменить первый второй и третий, на сегодня, завтра, послезавтра соответственно. Кстати о XML. Валидность файла имеет значение. Даже не совсем так. Например незакрытые теги, не считаются ошибкой, но парсить неудобно. Проблема в сгенерированом XML. В "понятный массив" проблема запихнуть. Без '@attribute'